继承的特性
- 子类继承父类的时候,如果子类的方法覆盖父类的方法,则子类的方法的参数必须兼容父类方法的参数
class Base {
greet(obj: string) {
console.log(obj)
}
}
class Child extends Base {
// 子类的类型
greet(obj: number | string) {
console.log(obj)
}
}
- 一个子类的值可以赋值给一个父类类型的变量,反之不可以
- 当一个子类的值赋值给一个父类类型的变量,该变量无法调用该子类才有的方法,当调用父类和子类都有的方法时,表现的是子类的行为
继承的初始化顺序
- 基类的字段被初始化
- 基类的构造函数被调用
- 子类的字段被初始化
- 子类的构造函数被调用
成员可见性
class Base {
protected n = 20
}
class Child extends Base {
public n = 50 // 可以修改父类同名属性的可见性
}
let a = new Child
console.log(a.n) // 输出 50
允许跨实例的成员访问
class Test {
private n!: number
compare(obj: Test) {
// 这里访问了以参数形式传进来的 obj 的私有属性
return obj.n > this.n
}
}
网友评论