- 定义:为不同数据类型的实体(子类实体)提供统一的接口(父类类型的引用)
- 示例:函数的形参只写父类引用(统一参数),且此函数接受父类实例对象和任意子类实例对象,以此来统一按需调用不同的类的相同方法
// 创建 父类
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("人");
// 多态一:父类类型引用指向子类实例对象
let xiaoming: Person = new Student(18, "小明");
// 多态二:父类类型引用指向子类实例对象
let mrZhang: Person = new Teacher("高二", "张老师");
// 多态的作用:不同类型的对象(必须是父子关系)针对相同的方法,产生了不同的行为
function sayWhat(who: Person) {
who.say(); // 执行共有的方法
}
sayWhat(person); // 传入 父类实例对象
sayWhat(xiaoming); // 传入 子类实例对象
sayWhat(mrZhang); // 传入 子类实例对象
网友评论