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
}

posted on 2021-12-23 17:13  In-6026  阅读(376)  评论(0)    收藏  举报

导航