物件導向
繼承 Inheritance
When
- 當子類別屬於父類別。(如. 狗屬於動物)
- 當子類別需要父類別中的大多數方法時。
Why
- 避免重工。
- 父類別的變更會直接反映在子類別。
封裝 Encapsulation
How
- 將變數設為private,使用getter跟setter去存取變數。
Why
- 目的在於避免直接修改變數而造成錯誤
多型 Polymorphism
子類別可以新增新方法而不用動到父類別。
抽象 Abstract
What
- 抽象類別無法產生(new)實體,因為它是"抽象"的。
- 抽象類別的方法可僅實作亦可僅宣告。
- 繼承抽象類別的子類別必須實作父類別的方法。
- 一個子類別只能繼承一個父類別。
When
- 當兩個物件的特徵幾乎一樣,只有少數方法不同時可繼承抽象類別。
介面 Interface
What
- 介面本身就是個抽象類別。
- 介面是一種規範,要實行介面必須要follow它定義的spec,也就是所有方法皆須實作。
- 一個類別可以同時實行多個介面。
When
- 當多個物件必須具有相同規範的時候可定義介面來實行。
http://answers.unity3d.com/questions/233859/whats-the-use-of-abstract-classes-and-interfaces-i.html
http://jimmu-jimmu.blogspot.tw/2012/10/abstract-classinterface.html