文章摘要: 抽象方法必須包含 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