ts中的多态

//多态: 父类型的引用指向子类型的对象,不同类型的对象针对相同的方法,产生了不同的行为
(() => {

    class Animal {
        name: string
        constructor(name: string) {
            this.name = name;
        }
        // 实例方法
        run(distance: number = 0) {
            console.log(`跑了${distance} 千米`)
        }
    }


    class Dog extends Animal {

        constructor(name: string) {
            // 调用父类的构造函数,实现子类中属性的初始化
            super(name)
        }

        // 实例方法重写父类中的实例方法
        // 实例方法
        run(distance: number = 5) {
            console.log(`${this.name}跑了${distance} 千米`)
        }
    }

    class Pie extends Animal {

        constructor(name: string) {
            // 调用父类的构造函数,实现子类中属性的初始化
            super(name)
        }

        // 实例方法重写父类中的实例方法
        // 实例方法
        run(distance: number = 10) {
            console.log(`${this.name}跑了${distance} km`);
        }
    }

    // 实例化父类对象
    const ani:Animal = new Animal('动物');
    ani.run()

    // 实例化子类对象
    const dog:Dog = new Dog("大黄");
    dog.run()

    const pie:Pie = new Pie('八戒');
    pie.run()


    console.log("=====================")

    const dog1:Animal =new Dog('小黄');
    dog1.run()


    const pie1:Animal = new Pie("小猪")
    pie1.run()


})()

  

运行结果:

 

posted @ 2022-01-17 11:19  前端那点事  阅读(257)  评论(0编辑  收藏  举报