继承
类可以通过 继承 快速获取另外一个类的 字段 和 方法。
父类:也可以叫做 基类 、超类 等
子类: 也可以叫做 派生类、继承类 等
子类能够访问父类的 属性、方法、构造函数,重写父类同名方法,测试调用
class dongzhuo {
name: string
age: number
sayHi() {
console.log(`我是董卓`)
}
constructor(name: string, age: number) {
this.name = name
this.age = age
}
}
// 通过 extends 继承父类
class lvbu extends dongzhuo {
// 子类 可以添加自己的属性 和 字段
weapons: string = '方天画戟'
sayHello() {
console.log('我的貂蝉在哪里')
}
// 子类可以重写同名字段 、方法
sayHi(): void {
console.log('我是吕布')
}
}
const s: lvbu = new lvbu('吕布', 18)
// 直接可以使用 继承而来的 属性 方法 构造函数
console.log(`${s.name}`)
s.sayHello()
s.sayHi()
Super
子类通过 super 可以访问父类的实例字段、实例方法和构造函数。可以在适当的时候使用 子类可通过super进行添加属性、构造函数、内部通过 super 调用父类构造函数完成父类属性的初始化、添加方法、内部通过 super 调用父类方法,复用逻辑
class dongzhuo {
name: string
age: number
sayHi() {
console.log(`你好,我叫:${this.name}`)
}
constructor(name: string, age: number) {
this.name = name
this.age = age
}
}
class lvbu extends dongzhuo {
height: number
constructor(name: string, age: number, height: number) {
// name 和 age 的初始化通过 super 来调用父类的构造函数
super(name, age)
this.height = height
}
sayHi(): void {
// 通过 super 访问父类的 字段 方法
super.sayHi()
super.name
super.age
console.log('我的貂蝉在哪里')
}
}
const s: lvbu = new lvbu('吕布', 18, 190)
s.sayHi()