《TypeScript实战指南》—3.2.7 抽象类

举报
华章计算机 发表于 2019/06/16 13:25:15 2019/06/16
【摘要】 本节书摘来自华章计算机《TypeScript实战指南》一书中的第3章,第3.2.7节,作者是胡桓铭。

3.2.7 抽象类

抽象类一般作为其他派生类的基类使用,不会直接被实例化。不同于接口,抽象类可以包含成员的实现细节。abstract关键字是用于定义抽象类和在抽象类内部定义抽象方法,示例如下:

abstract class Animal {

    abstract makeSound(): void;

    move(): void {

        console.log('roaming the earch...');

    }

}

抽象类中的抽象方法不包含具体实现并且必须在派生类中实现。抽象方法的语法与接口方法相似。两者都是定义方法签名但不包含方法体。然而,抽象方法必须包含abstract关键字,并且可以包含访问修饰符,示例如下:

abstract class Department {

 

    constructor(public name: string) {

    }

 

    printName(): void {

        console.log('Department name: ' + this.name);

    }

 

    abstract printMeeting(): void; // 必须在派生类中实现

}

 

class AccountingDepartment extends Department {

 

    constructor() {

        super('Accounting and Auditing'); // 在派生类的构造函数中必须调用 super()

    }

 

    printMeeting(): void {

        console.log('The Accounting Department meets each Monday at 10am.');

    }

 

    generateReports(): void {

        console.log('Generating accounting reports...');

    }

}

 

let department: Department; // 允许创建一个对抽象类型的引用

department = new Department(); // 错误: 不能创建一个抽象类的实例

department = new AccountingDepartment(); // 允许对一个抽象子类进行实例化和赋值

department.printName();

department.printMeeting();

department.generateReports(); // 错误: 方法在声明的抽象类中不存在


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。