类与访问修饰符
三种访问修饰符分别限制什么?
| 修饰符 | 可访问范围 |
|---|---|
public | 任何地方均可访问 |
private | 仅声明该成员的类内部 |
protected | 声明类及其子类的内部 |
class Animal {
private name: string;
public constructor(name: string) {
this.name = name;
}
}
const a: Animal = new Animal("Jack");
a.name; // 报错, private 成员不能在类外访问
- 默认: 不写修饰符时等价于
public;
readonly 如何与访问修饰符组合?
class Animal2 {
public constructor(public readonly name: string) {}
}
- 含义: 只读, 只能在声明处或构造函数中赋值;
- 位置: 与访问修饰符共存时, 必须写在访问修饰符之后;
abstract 类和抽象方法有什么约束?
abstract class Animal3 {
public name: string;
public constructor(name: string) {
this.name = name;
}
public abstract sayHi(): void;
}
- 抽象类: 不能被实例化, 只能被继承;
- 抽象方法: 只有签名没有实现, 子类必须实现;