[大話設計模式]物件導向 筆記1
名詞解釋
1、物件:一個獨立自主的實體,用一組可識別的特性和行為來標示。
2、類別:具有相同屬之屬性和功能的物件的抽向集合。
一、類別名稱首字母一定要大寫。多個單字則各個首字母大寫。
二、對外公開的方法需要用「public」修飾子。
3、建構式:建構函式,就是的類別進行初始化。建構式與類別同名,無返回值,也不需要void,在new 時調用。
4、方法重載:提供了建立同名的多個方法的能力,但這些方法需使用不同的參數類型或個數。提供了函式可擴展的能力。
5、屬性:是一個方法或一對方法,但在調用它的程式碼看來,它是一個欄位,即屬性適合以欄位的方式使用方法調用的場合。
6、欄位:儲存類別要滿足其設計所需要的資料,欄位是與類別相關的變數。
一、通常欄位都是private,即私有的變數,而屬性都是public,即公有的變數。
二、屬性的名稱一般首字母大寫,而欄位則一般首字母小寫或是加上底線( _ )。
三、屬性有兩個方法get和set。get存取器反回與宣告的屬性相同的資料類型,表示的意思是調用時可以得到內部欄位的值或參考。
set存取器沒有顯示定參數,但它有一個隱式參數,用關鍵字value表示,它的作用是調用屬性時,可以給內部的欄位或參考賦值。
7、封裝:每個物件都包含它進行操作所需要的所有資訊,物侲不必依賴其他物件來完成自己的操作。
一、良好的封裝能減少耦合。
二、類別內部的實現可以自由地修改。
三、類別具有清晰的對外介面。
8、繼承:定義了類別如何互相關聯,共用特性。代表一種”is-a”的關係。
一、子類別擁有父類跑非private的屬性和功能。
二、子類別具有自己的屬性和功能。
三、子別可以用自己的方式實現父類別的功能。(重寫)
9、多型:表示不同的物件可以執行相同的動作,但要透過它們自己的實程式碼來執行。
一、為了使子類別的實體完全接替來自父類別的類別成員,父類必須將該成員宣告為虛擬的
二、子類別可以選擇使用override關鍵字,將父類別實現替換為它自己的實現,這就是方法重寫Override或叫方法覆寫。
10、抽象類別:當投計一個新的抽象類別時,一定是用來繼承的,所以在一個以繼承關係形成的等級結構裡面,樹葉節點應當是具體類別,而樹技節點均應當是抽象類別。
11、介面:把隱式公共方法和屬性組合起來,以封裝特定功能的一個集合。(所以目的就是為要做到一個特定的功能)
一、一旦類別實現了介面,類別就可以支援介面所指定的所有屬性和成員。
二、宣告介面在語法上一宣告抽象類別完全相同,但不提供介面中任何成員的執行方式。
三、介面不能實體化,不能有建構式和欄位;不能有修飾子;不能宣告虛擬的或靜態的
四、實現介面的別就必須 實現介面中所有方法和屬性。
五、實現介面的類別就必須實現介面中所有的方法和屬性。
六、一個類別可以支援多個介面,多個類別也可以支援相同的介面。
七、介面的命名前面要加一個大寫的”I”。
抽象類別 V.S 介面
依型態區分:
一、抽象類別可以給出一些成員的實現,介面卻不包括成員的實現。
二、抽象類別的抽象成員可以被子類別部份實現,介面的成員需要實現類別完全實現
三、一個類別只能繼承一個抽象類別,但可實現多個介面。
另:
一、類別是對物件的抽象;抽象類別是對類別的抽象。
二、如果行為跨越不同類別的物件,可使用介面;對於一些相似的類別物件,用繼承抽象類別。
三、從設計的角度講,抽象類別是從子類別中發現了公共的東西,泛化出父類別,然後子類別繼承父類別,
而介面跟本不知子類別的存在,方法如何實現還不確認,預先定義。
12、泛型:指一些類別、結構、介面和方法,而它們具有其儲或使用的一個或多個型別之替代符號(型別參數)。
泛型集合類別可能會將型別參數當作它所儲存的物件型別之替代符號;
這些型別參數會以其欄位型別及其方法的參數型別之形式出現。
13、委託:對函數的封裝,可以當作給方法的特徵指定一個名稱。(一種參考方法的類型,一旦為委託分配了方法,委託將與該方法具有完全相同的行為)
14、事件:委託的一種特殊形式,當發生有意義的事情時,事件物處理通知過程。(在發生其他類別或物關注的事情時,類別或物件可透過事件通知它們)