官术网_书友最值得收藏!

Access modifiers

So far, all our class properties and methods have automatically had the public access modifier. This means they are available to interact with class instances and child classes. We can explicitly set the public keyword on our class properties and methods immediately before the property or method name:

class OrderDetail {
public product: Product;
public quantity: number;

public getTotal(discount: number): number {
const priceWithoutDiscount = this.product.unitPrice * this.quantity;
const discountAmount = priceWithoutDiscount * discount;
return priceWithoutDiscount - discountAmount;
}
}

As you might have guessed, there is another access modifier, called private, which allows the member to only be available to interact with inside the class and not on class instances or child classes.

Let's look at an example:

  1. Let's add a delete method in our OrderDetail class, which sets a private deleted property:
class OrderDetail {
public product: Product;
public quantity: number;
private deleted: boolean;

public delete(): void {
this.deleted = true;
}
...
}
  1. Let's create an instance of OrderDetail and try to access the deleted property:
const orderDetail = new OrderDetail();
orderDetail.deleted = true;

As expected, the compiler complains:

There is a third access modifier, protected, which allows the member to be available to interact with inside the class and on child classes, but not on class instances.

主站蜘蛛池模板: 辽阳县| 永兴县| 深水埗区| 镇宁| 汶川县| 长海县| 雷州市| 黄石市| 四会市| 疏勒县| 治县。| 益阳市| 龙陵县| 灵石县| 孟州市| 黔江区| 富源县| 阿坝县| 化州市| 湖口县| 福清市| 桦川县| 福泉市| 凯里市| 于都县| 隆尧县| 喜德县| 溧阳市| 西青区| 贵南县| 永福县| 临汾市| 靖边县| 连州市| 定兴县| 富锦市| 沅江市| 辉南县| 桑日县| 三都| 东港市|