typescript_抽象类与多态

本文探讨了抽象类的概念及其实现方式,包括代码复用和扩展性提升。通过实例展示了抽象类与抽象方法的使用,以及如何在子类中实现多态。同时,文章还介绍了 TypeScript 中 this 类型的应用,实现链式调用的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 抽象类的定义
1.1 抽象类 - 可以提取公用代码, 利于代码的复用和扩展
1.2 抽象类不能直接实例化
1.3 抽象方法,子类不需要实现该方法

abstract class Animal {
    eat () {
        console.log("e")
    }
    abstract sleep() : void //抽象方法,子类必须实现该方法
}

class IsDog extends Animal  {
    constructor(name : string) {
        super();
        this.name = name;
    }
    name : string;
    run() {}
    sleep(): void {
        console.log("IsDog")
    }
}

var isdog = new IsDog("11");
isdog.eat();

2. 抽象类的多态实现
2.1 多态定义:在父类中定义一个方法,在多个实例中, 这个方法有不同的实现,在运行时绑定

class isCat extends Animal {
    constructor() {
        super();
    }
    sleep(): void {
        console.log("isCat")
    }
}

let iscat = new isCat();
let animals : Animal[] = [isdog , iscat];
animals.forEach(i => i.sleep());

3.特殊的ts类型,this类型,实现链式调用

class WorkFlow {
    step1(){
        console.log("step1");
        return this;
    }
    step2(){
        console.log("step2");
        return this;
    }
}
//实现链式调用
new WorkFlow().step1().step2();

3.1 实现链式调用:实现链式调用,父类和子类调用

class Myflow extends WorkFlow {
    next(){
        return this;
    }
    step3(){
        console.log("step3");
        return this;
    }
};

new Myflow().next().step1().step3();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值