作者: 苍老师的眼泪 | 来源:发表于2022-08-26 15:50 被阅读0次

继承的特性

  • 子类继承父类的时候,如果子类的方法覆盖父类的方法,则子类的方法的参数必须兼容父类方法的参数
class Base {
    greet(obj: string) {
        console.log(obj)
    }
}

class Child extends Base {
    // 子类的类型
    greet(obj: number | string) {
        console.log(obj)
    }
}
  • 一个子类的值可以赋值给一个父类类型的变量,反之不可以
  • 当一个子类的值赋值给一个父类类型的变量,该变量无法调用该子类才有的方法,当调用父类和子类都有的方法时,表现的是子类的行为

继承的初始化顺序

  1. 基类的字段被初始化
  2. 基类的构造函数被调用
  3. 子类的字段被初始化
  4. 子类的构造函数被调用

成员可见性

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
    }
}

相关文章

网友评论

      本文标题:

      本文链接:https://www.haomeiwen.com/subject/hjyzgrtx.html