概述
继承,是面向对象语言的特征之一
生活中的子女继承父母拥有的所有财产
继承是指 子类 拥有 父类的 属性 和 方法
好处
提高代码的 复用性
格式
通过 extends 关键字,可以声明一个子类继承一个父类,定义格式如下:
class 父类 {
...
}
class 子类 extends 父类 {
...
}
例子
定义父类 Person:
class Person {
// 定义姓名
name:string = ""
// 定义eat() 方法
eat(food:string):void{
console.log("吃",food);
}
}
定义子类 Student,继承父类 Person:
class Student extends Person {
}
通过 Student 创建 lilei 对象:
const lilei = new Student()
lilei.name = '李雷' // 继承父类的 属性
lilei.eat("苹果") // 继承父类的 实例方法
console.log(lilei.name) // 继承父类的 属性
子类中定义新属性
注意:如果子类和父类 没有重名 的属性,这时的访问是 没有影响 的。
例子
子类中定义新属性:
class Student extends Person {
clazz:string = "" // 子类中定义新属性班级,不要用class
}
使用子类的新属性:
const lilei = new Student()
lilei.name = '李雷' // 继承父类的 属性
lilei.clazz = '计算机1班' // 子类的 属性
console.log(lilei.name) // 继承父类的 属性
console.log(lilei.clazz) // 子类的 属性
子类中定义新实例方法
注意:如果子类父类中 没有重名 的成员方法,调用是没有影响 的。
例子
class Student extends Person {
clazz:string = "" // 子类中定义新属性
// 新增实例方法
study(lesson:string): void {
console.log("学习",lesson);
}
}
const lilei = new Student()
lilei.study("英语") // 继承父类的 实例方法
继承的特点
多层继承
祖、父、子、孙
class A{}
class B extends A{}
class C extends B{}
