簡介物件導向的名詞,以 TypeScript 為例。
介紹各種你會看到的名詞。
Class,類別,一種可以整合邏輯和狀態的單位,例如:
接著你可以這樣操作:
有幾點名詞:
把類別抽象化,例如:
這裡有幾個新的名詞:
Poodle
或 Bulldog
都去繼承抽象類別 Dog
但是抽象類別不能建構:
除了抽象類別,你也可以用介面來把抽象層度拉高:
介面一樣不能建構:
這裡再強調一下介面本身沒有實作,介面只是告訴大家:我有這個函式,但其他人怎麼實作的我不知道。以上面的介面為例,所有 Animal
都可以有 isInjured
這個函示,並且他回傳的值必須是 boolean
。
也因此類別必須去「實作」這個介面,以上面的抽象類別 Dog
為例,他就實作了這個函示:
種類 | 建構 | 實作 | 抽象層度 |
---|---|---|---|
class | O | O | 低 |
abstract class | X | O | 中 |
interface | X | X | 高 |
為什麼要拉高抽象層度?
想像一下朋友打電話給你,問你在幹嘛,你可以有兩種選擇:
抽象之後,就可以延伸很多設計模式(Design Patterns)。
雖然介面和抽象類別不能建構,但是他可以被用作型別(type)。