TS基础——多态
子类对于同一个方法产生了不同的行为
class Animal {
name: string
constructor(name: string) {
this.name = name;
}
run(miles: number = 5): void {
console.log(`${this.name} can run ${miles} miles`);
}
}
class Pig extends Animal {
constructor(name: string) {
super(name)
}
run(miles: number = 10): void {
console.log(`${this.name} can run ${miles} miles`);
}
}
class Dog extends Animal {
constructor(name: string) {
super(name)
}
run(miles: number = 20): void {
console.log(`${this.name} can run ${miles} miles`);
}
}
const ani: Animal = new Animal('动物');
ani.run()
//pig,dog 和 Pig 是父子关系,故可以相互定义类型
const pig1: Animal = new Pig('猪1')
const pig2: Dog= new Pig('猪2')
const pig3: Pig= new Pig('猪3')
const ani1: Animal = new Animal('动物1')
const ani2: Dog= new Animal('动物2')
const ani3: Pig= new Animal('动物3')
//作用
function showName(ani: Animal): string { //此处只需要一个类型就可以(Animal,Pig,Dog都可),而不需要(ani: Animal|Dog|Pig): string
return ani.name
}
浙公网安备 33010602011771号