• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

【Typescript】抽象类,抽象方法,多态(7)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

所谓类的抽象是只能被继承,而不能被实例化的类。
抽象就是指不具体的,所以抽象类就是指不具体的类。所以抽象类自身没有什么功能,通常作为父类类使用。需要注意,抽象类仅仅作为基类,不能new。

abstract class Animal {
    eat() {
        console.log('eat');
    }
}

// let animal = new Animal(); // 无法创建抽象类的实例。

class Dog extends Animal {
    constructor(name: string) {
        super();
        this.name = name;
    }
    name: string
    run() {

    }
}

let dog = new Dog('wangwang');
dog.eat(); // 打印出来eat

抽象方法

abstract class Animal {
    eat() {
        console.log('eat');
    }

    abstract sleep(): void // 抽象方法
}

// let animal = new Animal(); // 无法创建抽象类的实例。

class Dog extends Animal {
    constructor(name: string) {
        super();
        this.name = name;
    }
    name: string
    run() {}
    sleep() {
        console.log('dog sleep');
    }
}

let dog = new Dog('wangwang');
dog.eat(); // 打印出来eat
dog.sleep(); // 打印出来dog sleep

多态

抽象类还可以实现多态,在程序运行中我们定义一个抽象方法,在子类中我们可以对这个方法进行不同的实现。在程序运行的时候会根据不同的对象执行不同的操作。这样就实现了运行时的绑定。

abstract class Animal {
    eat() {
        console.log('eat');
    }

    abstract sleep(): void // 抽象方法
}

// let animal = new Animal(); // 无法创建抽象类的实例。

class Dog extends Animal {
    constructor(name: string) {
        super();
        this.name = name;
    }
    name: string
    run() {}
    sleep() {
        console.log('dog sleep');
    }
}

class Cat extends Animal {
    sleep() {
        console.log('cat sleep');
    }
}
 
let dog = new Dog('wangwang');

let cat = new Cat();
let animals: Animal[] = [dog, cat];
animals.forEach(i => {
    i.sleep();
});

链式调用

class Workflow {
    step1() {
        return this;
    }

    step2() {
        return this;
    }
}

new Workflow().step1().step2();

class Myflow extends Workflow {
    next() {
        return this;
    }
}
new Myflow().next().step1().next().step2();


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap