文章摘要: 抽象方法必須包含 abstract關鍵字並且可以包含訪問修飾符} 抽象類中的抽象方法不包含具體實現並且必須在派生類中實現
專案實踐倉庫
https://github.com/durban89/typescript_demo.git tag: 1.1.4
爲了保證後面的學習演示需要安裝下ts-node,這樣後面的每個操作都能直接執行看到輸出的結果。
npm install -D ts-node
後面自己在練習的時候可以這樣使用
npx ts-node 指令碼路徑
類
抽象類
抽象類做為其它派生類的基類使用。 它們一般不會直接被例項化。 不同於介面,抽象類可以包含成員的實現細節。 abstract關鍵字是用於定義抽象類和在抽象類內部定義抽象方法。具體例子如下
abstract class Animal {
abstract makeSount(): void; move(): void {
console.log('我在移動');
}
}
抽象類中的抽象方法不包含具體實現並且必須在派生類中實現。 抽象方法的語法與介面方法相似。 兩者都是定義方法簽名但不包含方法體。 然而,抽象方法必須包含 abstract關鍵字並且可以包含訪問修飾符。具體示例如下
abstract class Department {
constructor(public name: string) {
}
printName(): void {
console.log("部門名稱:" + this.name);
}
abstract printMeeting(): void; // 必須在派生類中實現
}
class AccountingDepartment extends Department {
constructor() {
super("會計和審計"); // 在派生類中必須呼叫super()
}
printMeeting(): void {
console.log('會計部每個星期一上午10點開會');
}
generateReports(): void {
console.log('生成會議報告');
}
}
let department: Department; // 允許建立一個對抽象型別的引用
// department = new Department(); // 不能建立一個抽象類的例項
department = new AccountingDepartment(); // 允許對一個抽象子類進行例項化和賦值
department.printName();
department.printMeeting();
// department.generateReports(); // 此方法不能呼叫,因為在宣告的抽象類中不存在
執行後的結果如下
$ npx ts-node src/classes_6.ts 部門名稱:會計和審計 會計部每個星期一上午10點開會
本例項結束實踐專案地址
https://github.com/durban89/typescript_demo.git tag: 1.1.5
頭條楓林網