TypeScript多态

介绍

父类型的引用指向了子类型的对象,不同类型的对象针对相同的方法,产生了不同的行为。

(() => {
    // 定义一个父类
    class Animal {
        // 定义一个构造函数
        constructor(name) {
            // 更新属性值
            this.name = name;
        }
        // 实例方法
        run(distance) {
            console.log(`跑了${distance}米这么远的距离`, this.name);
        }
    }
    // 定义一个子类
    class Dog extends Animal {
        // 构造函数
        constructor(name) {
            // 调用父类的构造函数,实现子类中属性的初始化操作
            super(name);
        }
        // 实例方法,重写父类中的实例方法
        run(distance = 5) {
            console.log(`跑了${distance}米这么远的距离`, this.name);
        }
    }
    // 定义一个子类
    class Cat extends Animal {
        // 构造函数
        constructor(name) {
            // 调用父类的构造函数,实现子类中属性的初始化操作
            super(name);
        }
        // 实例方法,重写父类中的实例方法
        run(distance = 10) {
            console.log(`跑了${distance}米这么远的距离`, this.name);
        }
    }
    // 实例化父类对象
    const ani = new Animal('动物');
    ani.run(6);
    // 实例化子类对象
    const dog = new Dog('狗');
    dog.run();
    const cat = new Cat('猫');
    cat.run();
    // 父类和子类的关系:父子关系,此时,父类类型创建子类的对象
    const dog1 = new Dog('小黄');
    dog1.run(5);
    const cat1 = new Animal('小猫');
    cat1.run(7);
})();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值