TS中的多态
为不同数据类型的实体(子类实体)提供统一的接口(父类类型的引用)
// 创建 父类
class Person {
name: string;
constructor(name: string) {
this.name = name;
}
say(): void {
console.log(this.name);
}
}
// 创建 子类一
class Student extends Person {
age: number;
constructor(age: number, name: string) {
super(name);
this.age = age;
}
say(): void {
console.log(this.name + this.age);
}
}
// 创建 子类二
class Teacher extends Person {
grade: string;
constructor(grade: string, name: string) {
super(name);
this.grade = grade;
}
say(): void {
console.log(this.name + this.grade);
}
}
// 常规:父类类型引用指向父类实例
let person: Person = new Person("父类");
person.say()
// 多态一:父类类型引用指向子类实例对象
let xiaoming: Person = new Student(18, "小明:");
xiaoming.say()
// 多态二:父类类型引用指向子类实例对象
let mrZhang: Person = new Teacher("高二", "张老师:");
mrZhang.say()