day172-TypeScript基础小记-抽象类

要点

  1. abstract关键字。
  2. 抽象方法。

abstract关键字

抽象类做其他派生类基类使用。抽象类一般不会直接被实例化

抽象类可以包含成员的实现细节。
abstract关键字是用于定义抽象类和在抽象类内部定义抽象方法。

abstract class Animal {
abstract makeSound(): void
move(): void {
console.log('到处走')
}
}

抽象方法

抽象类中的抽象方法不包含具体实现并且必须在派生类中实现。抽象方法的语法与接口方法相似。

两者都是定义方法签名但不包含方法体。然而,抽象方法必须包含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('银行')
}
printMeeting(): void {
console.log('银行每周一早上10点开门')
}
generateReports(): void {
console.log('生成银行报告')
}
}
let department: Department // 允许创建一个对抽象类型的引用
// department = new Department() // 无法创建抽象类的实例。ts(2511)
department = new AccountingDepartment() // 允许对一个抽象子类进行实例化和赋值
department.printMeeting()
department.printName()
department.generateReports() // 类型“Department”上不存在属性“generateReports”。ts(2339)
文章作者: lmislm
文章链接: http://lmislm.com/2019/07/04/2019-07-04/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LMISLMのBlog