位置:首页 > web前端 > typescript

ts多态 抽象方法

dearweb 发布:2021-07-25 15:51:43阅读:

多态继承,每一个继承它的子类去实现,每一个子类的表现不一样

多态继承

    // 多态  属于继承的一个表现
    class Animal {
        name: string
        constructor(name: string) {
            this.name = name
        }
        eat() {
            console.log('吃的方法')
        }
    }
    class Dog extends Animal {
        constructor(name: string) {
            super(name)
        }
        eat() {
            return this.name + '吃粑粑'
        }
    }
    class Cat extends Animal {
        constructor(name: string) {
            super(name)
        }
        eat() {
            return this.name + '吃鱼'
        }
    }
    let D= new Dog('xiaogou')
    console.log(D.eat()); // xiaogou吃粑粑

抽象方法和抽象类 

typescript 中的抽象类,它是提供其它类继承的基类,不能直接被实例化。用abstract关键字定义抽象类和抽象方法,抽象中的抽象方法不包含具体实现并且必须在派生类中实现,abstract抽象方法只能放在抽象类里面。

// 主要用于提供基类,不能直接使用
abstract class Animal {
    public name: string
    constructor(name: string) {
        this.name = name
    }
    //抽象方法在子类里面必须实现,
    abstract eat(): any
    //其他方法在子类里面可以不用实现,
    run() {

    }
}

// 抽象类错误的引用写法
// let P = new Animal() 不能直接被引用

class Dog extends Animal {

    constructor(name: any) {
        super(name)
    }
    //   抽象类的子类必须执行抽象类里面的方法
    eat() {
        return `${this.name}吃老鼠`
    }
}

let D = new Dog('猫猫')
console.log(D.eat()); // 猫猫吃老鼠


24人点赞 返回栏目 提问 分享一波

小礼物走一波,支持作者

还没有人赞赏,支持一波吧

留言(问题紧急可添加微信 xxl18963067593) 评论仅代表网友个人 留言列表

暂无留言,快来抢沙发吧!

本刊热文
网友在读
手机扫码查看 手机扫码查看