2018年8月10日 星期五

TypeScript基礎入門 - 類 - 抽象類




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




http://www.buzzfunnews.com/20180826746.html

更多有趣新聞請上:http://www.buzzfunnews.com

沒有留言:

張貼留言