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

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.

主站蜘蛛池模板: 阜平县| 太白县| 合作市| 高尔夫| 金湖县| 陵川县| 大英县| 漳平市| 嘉义县| 阳东县| 轮台县| 平舆县| 永济市| 肥城市| 彰化县| 岳西县| 四川省| 巫溪县| 香河县| 全南县| 揭阳市| 顺平县| 尼勒克县| 济源市| 来宾市| 阳西县| 改则县| 黄陵县| 长顺县| 丁青县| 普兰县| 潮安县| 三门县| 和林格尔县| 莒南县| 榆树市| 清河县| 修文县| 平度市| 淮安市| 兰溪市|