以前看大話程式設計整理的物件導向基礎,現在剛好在重看就順便把它再整理一下囉~
物件(Object)
- 一個獨立自主的實體,用一組可識別的特性和行為來標示
類別(Class)
實體(instance)
- 一個真實的物件
- 實體化就是建立建件的過程,使用new關鍵字來建立
建構式(constructor)
- 又叫建構函式,其實就是對類別進行初始化。
- 建構式與類別同名,無返回值
- 所有類別都有建構式,若無定義,系統會自動產生空的建構式;若有定義,則預定的建構式就會失效
方法重載(Overload)
- 提供建立同名的多個方法的能力,這些方法需使用不同的參數類型
- Overload方法名相同,參數類型或個數要有所不同
- Overload可在不改變原方法的基礎上,新增功能
屬性(Property)
- 一個方法或一對方法,但在調用它的程式碼看來,它是一個欄位,即屬性適合於以欄位的方式使用方法調用的場合
- 欄位是儲存類別要滿足其設計所需要的資料,欄位是與類別相關的變數
- 屬性有二個方法get和set
- get存取器返回與宣告的屬性相同的資料類型,調用時可以得到內部欄位的值或參考
- set存取器沒有顯示設定參數,但它有一個隱式參數,用關鍵字value表示,它的作用是調用屬性時,可以給內部的欄位或參考賦值
封裝(Encapsulation)
- 每個物件都包含它進行操作所需要的所有資訊,物件不必依賴其他物件來完成自已的操作
- 好處
- 良好的封裝能夠減少耦合
- 類別內部的實現可以自由的修改
- 類別具有清晰的對外介面
繼承(Inheritance)
- 物件的繼承代表了一種“is-a"的關係
- 繼承者可以理解為是對被繼承者的特殊化,它除了具備被繼承者的特性外,還具備自已獨有的個性
- 繼承定義了類別如何相互關聯,共用特性
- 父類別和子類別,或叫基礎類別和衍生類別,其中子類別繼承父類別的所有特性,還可以定義新的特性
- 子類別擁有父類別非private的屬性和功能
- 子類別具有自已的屬性和功能
- 子類別還可以用自已的方式實現父類別的功能(方法重寫)
- 優點
- 繼承使得子類別公共的部分都放在父類別,使得程式碼得到共用,避免了重覆
- 繼承可使得修改或擴展繼承而來的實現都較為容易
- 缺點
- 父類別變動,子類別也不得不變
- 繼承會破壞包裝,父類別實現細節暴露給子類別
- 繼承是一種類別與類別之間強耦合的關係
- 當二類別之間具備“is-a"的關係時,就可以考慮用繼承
修飾子
多型(Polymorphism)
- 不同的物件可以執行相同的動作,但要透過它們自已的實現程式碼來執行
- 特性
- 子類別以父類別的身份出現
- 子類別在工作時以 自已的方式來實現
- 子類別以父類別的身份出現時,子類別特有的屬性和方法不可以使用
- 子類別將父類別的實現替換為自已的實現,這就是方法重寫(Override),或者叫方法覆寫
- 多型的原理是當方法被調用時,無論物件是否轉換為其父類別,都只有位於物件繼承的最末端的方法實現會被調用,也就是說,虛擬方法是按照其執行時類型,而非編譯時類型進行動態繫結調用