跳到主要内容

类与访问修饰符

三种访问修饰符分别限制什么?​

修饰符可访问范围
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;
}
  • 抽象类: 不能被实例化, 只能被继承;
  • 抽象方法: 只有签名没有实现, 子类必须实现;