ts中的继承

160 阅读1分钟

ts的定义类

创建实例对象,实例对象触发构造函数,并且传递参数,构造函数接受参数后并且赋值

class Person {
  name: string;//定义了属性
  constructor(name: string) {//构造函数 实例化类的时候,触发该函数
    this.name = name;
  }
  run(): void {
    console.log(this.name);
  }
}
let p = new Person("张三");//这边传递参数,实例化类后,触发构造函数,然后构造函数,接受传递过来的参数,进行赋值
p.run();//张三

ts的继承

1:通过 extends 来继承父类
2:通过 super 来初始化父类的构造函数 并且传递参数

class Person {
  name: string;
  constructor(name: string) {
    this.name = name;
  }
  run(): string {
    return `${this.name}在跑步`
  }

}
// let p = new Person("张三");
// console.log(p.run());//张三在跑步
//Good类来继承Person类
class Good extends Person {
  constructor(name: string) {
    super(name);//初始化父类的构造函数
  }
}
let g = new Good("麻子");
console.log(g.run());//麻子在跑步

修饰符

可以看到,上述的形式跟ES6十分的相似,typescript在此基础上添加了三种修饰符:

  • 公共 public:可以自由的访问类程序里定义的成员
  • 私有 private:只能够在该类的内部进行访问
  • 受保护 protect:除了在该类的内部可以访问,还可以在子类中仍然可以访问

私有修饰符

只能够在该类的内部进行访问,实例对象并不能够访问

image.png

并且继承该类的子类并不能访问,如下图所示:

image.png

受保护修饰符

跟私有修饰符很相似,实例对象同样不能访问受保护的属性,如下:

image.png

有一点不同的是 protected 成员在子类中仍然可以访问

image.png