TS之类的继承与super
继承 TS Super 之类
2023-09-11 14:19:18 时间
例子
我们先写一个例子
// 父类
class Animal{
name:string;
age: number;
constructor(name:string,age:number){
this.name = name;
this.age = age
}
sayName(){
console.log(this.name)
}
}
// 子类
class Dog extends Animal{
run(){
console.log(`${this.name}run`);
}
}
class Cat extends Animal{
sayName(){
console.log(`我是${this.name}`);
}
}
const dog = new Dog("旺财",19)
const cat = new Cat("汤姆",20)
dog.sayName()
dog.run()
cat.sayName()
- 可以将代码复制到如下网址运行 点击
- 我们查看结果
extends关键字
- 我们使用
extends
关键字来进行继承,其中被继承的Animal
为父类,Dog
为子类 - 继承之后,子类会拥有父类的一切属性和方法
- 子类也可以自己定义一些方法,如上面例子中的
run
- 子类也可以写与父类相同的方法,这样执行方法的时候会执行子类的方法,叫做方法重写(Cat类中重写了sayName方法)
super关键字
super
用在子类中,他表示当前的父类
// 父类
class Animal{
name:string;
age: number;
constructor(name:string,age:number){
console.log("Animal");
this.name = name;
this.age = age
}
sayName(){
console.log(this.name)
}
}
// 子类
class Dog extends Animal{
sex:"male"|"female";
constructor(name:string,age:number,sex:"male"){
super(name,age) // 如果在子类中写了构造函数,就必须调用父类的构造函数
this.sex = sex
}
sayName(){
// 类的方法中super就表示父类
super.sayName()
console.log("Dog")
}
run(){
console.log(`${this.name}run`);
}
}
const dog = new Dog("旺财",19,"male")
dog.sayName()
dog.run()
构造函数
- 在构造函数中
super()
表示父类的构造函数 - 如果在子类中写了构造函数,就必须调用父类的构造函数
类的方法中
- 在类的方法中super直接表示父类
- 我们可以通过
super.父类的方法
调用父类的方法