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();