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

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.

主站蜘蛛池模板: 元朗区| 遵化市| 磐石市| 克什克腾旗| 泾源县| 白河县| 台前县| 新津县| 湘阴县| 新昌县| 丰宁| 岗巴县| 铜鼓县| 仙居县| 西宁市| 昌邑市| 江山市| 饶河县| 龙州县| 牡丹江市| 金平| 大同市| 武汉市| 丹寨县| 大厂| 清徐县| 嘉定区| 台山市| 宜君县| 昌乐县| 治县。| 丁青县| 安乡县| 江门市| 西昌市| 呈贡县| 安顺市| 乌恰县| 聂拉木县| 崇左市| 西平县|