// 抽象类
abstract class Department {
name:string
constructor(name:string) {
this.name = name
}
printName():void {
console.log(`department's name is ${this.name}`)
}
//抽象方法
abstract printMeeting():void
}
class AccountingDepartment extends Department {
constructor(name:string='会计公寓') {
super(name)
}
printMeeting():void {
console.log('会计公寓每天早上10点开会')
}
generateReports():void {
console.log('生成一份会计报告...')
}
}
let department1:Department
department1 = new AccountingDepartment()
department1.printMeeting()
department1.printName()
// department1.generateReports()//报错,因为要按照Department类型调用方法
// 要想使用department1.generateReports()需要这样:
let department:AccountingDepartment
department = new AccountingDepartment()
department.printMeeting()
department.printName()
department.generateReports()
1.用abstract关键字定义抽象类和抽象方法,抽象类中的抽象方法不包含具体实现并且必须在派生类中实现。
2. abstract抽象方法只能放在抽象类里面
3. 抽象类和抽象方法用来定义标准 。 标准:Department 这个类没有generateReports方法,所以department1.generateReports()报错,因为要按照Department里面有的方法去调用