歡迎光臨
我們一直在努力

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

未經允許不得轉載:頭條楓林網 » TypeScript基礎入門 – 類 – 抽象類