typescript 的类中 protected 和 prevate 有什么区别?
时间: 2024-03-22 10:38:14 浏览: 23
在 TypeScript 中,`protected` 和 `private` 关键字都用来描述类中的成员访问权限。
`private` 标记的成员只能在该类内部访问,而不能在类的外部访问。而 `protected` 标记的成员可以在该类内部以及该类的子类中访问,但是不能在类的外部访问。
例如,我们有如下代码:
```typescript
class Person {
private name: string;
protected age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
}
class Student extends Person {
constructor(name: string, age: number) {
super(name, age);
console.log(this.name); // Error: 'name' is private and only accessible within class 'Person'.
console.log(this.age); // OK
}
}
```
在上面的代码中,`Person` 类中的 `name` 成员被标记为 `private`,因此它只能在 `Person` 类内部访问,而不能在 `Student` 类中访问。而 `age` 成员被标记为 `protected`,因此它可以在 `Person` 类及其子类中访问,因此在 `Student` 类中可以访问它。
总的来说,`private` 和 `protected` 的区别在于是否可以在子类中访问,如果需要在子类中访问,就应该使用 `protected`。