ts 多态

作者: 暴躁程序员 | 来源:发表于2022-05-23 15:51 被阅读0次
    1. 定义:为不同数据类型的实体(子类实体)提供统一的接口(父类类型的引用)
    2. 示例:函数的形参只写父类引用(统一参数),且此函数接受父类实例对象和任意子类实例对象,以此来统一按需调用不同的类的相同方法
    // 创建 父类
    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); // 传入 子类实例对象
    

    相关文章

      网友评论

          本文标题:ts 多态

          本文链接:https://www.haomeiwen.com/subject/xdirprtx.html