大話設計模式 物件導向基礎 總結

2021-10-21 18:26:40 字數 4670 閱讀 3917

11.集合

12.泛型

物件:一切事務皆物件,即所有的東西都是物件,物件就是可以看到,感覺到,聽到,觸控到,嚐到,或問道的東西。準確來說,物件是乙個自包含的實體,用一組可識別的特性和行為來標識。

類:就是具有相同屬性和功能的物件的抽象的集合。

class是表示定義類的關鍵字。

注意:第一,類名稱首字母要大寫。多個字母則各個首字母大寫。第二,對外的方法用「public」修飾符。

例項:就是乙個真實的物件。

例項化:就是建立物件的過程,使用new關鍵字來建立

cat cat = new cat();

cat cat;宣告乙個cat物件,物件名為cat.

cat=new cat(); 將cat物件例項化。

所有的類都有構造方法,如果你不編碼則系統預設生成空的構造方法(即無參構造),若你有定義的構造方法,那麼預設的構造方法就會失效了。

方法過載提供了建立同名的多個方法的能力,但是這些方法需要使用不同的引數型別。

注意:並不是構造方法可以過載,普通方法也可以過載。

方法過載時,兩個方法必須要方法名相同,但是引數型別或個數必須要有所不同。

好處:方法過載可以在不改變原方法的基礎上,新增功能。

屬性是乙個方法或一對方法,但在呼叫它的**看來,它是乙個字段,即屬性適合於字段的方式使用方法呼叫場合。

字段是儲存類要滿足其設計所需要的資料,欄位是於類相關的變數。

public」表示它所修飾的類成員可以允許其他任何類來訪問,俗稱公有的。而「private」表示只允許同乙個類中的成員訪問,其他類包括它的子類無法訪問,俗稱私有的

通常字段都是private,即私有的變數,而屬性都是public,即公有的變數

屬性有兩個方法get和set。

get訪問器返回與宣告的屬性相同的資料型別,表示的意思是呼叫時可以得到內部欄位的值或引用;

set訪問器沒有顯示引數設定,但是它有乙個**引數,用關鍵字value表示,它的作用時呼叫屬性時可以給內部的字段或引用賦值。

封裝:每個物件都包含它能進行操作所需的所有資訊,這個特性稱之為封裝,因此物件不必依賴其他物件來完成自己的操作。

這樣方法和屬性包裝在類中,通過類的例項來實現。

提煉出xx類就是在封裝

封裝的好處:

第一,良好的封裝能夠減少耦合

第二,類內部的實現可以自由的修改

第三,類具有清晰的對外介面 指定義為public的屬性和方法

物件的繼承代表了一種「is-a」的關係,如果兩個物件a和b。可以描述為「b是a」,則表明b可以繼承a。

繼承者可以理解為是對被繼承者的特殊化,因為它除了具備被繼承者的特性外,還具備自己獨有的個性。

繼承定義了類如何互相關聯,共享特性,繼承的工作方式是,定義父類和子類,或叫做基類和派生類,其中子類繼承父類所有的特徵,子類不但繼承了父類的所有特徵,還可以定義新的特徵。

如果子類繼承父類,

第一,子類擁有父類非private的的屬性和功能

第二,子類具有自己的屬性和功能,即子類可以擴充套件父類沒有得屬性和功能

第三,子類還可以以自己的方式實現父類的功能(方法重寫)

protected修飾符 表示整合時子類可以對基類有完全訪問許可權,

繼承的好處:不用繼承的話,如果要修改功能,就必須在所有重複的方法中修改,**越多,出錯的可能就越大,而繼承的優點是,繼承是的所以子類公共的部分都放在父類,是的**的到共享,就避免了重複,另外,繼承可使得修改或擴充套件繼承而來的實現都比較容易。

繼承的缺點:父類變,則子類不得不變。繼承會破壞包裝,父類實現細節暴露給子類。

耦合性:繼承是一種類與類的強耦合的關係

使用繼承的時間:當兩個類之間具備「is-a」的關係時,就可以考慮繼承了。因為這表示乙個類時另乙個類的特殊種類。

而當兩個類之間是「has-a」的關係時,表示某個角色具有某一項責任,此時不適合用繼承,比如人有兩隻手,手不能繼承人;飛機場有飛機,飛機也不能繼承飛機場。

多型表示不同的物件可以執行相同的動作,但是通過他們自己的實現**來執行。

注意:

第一:子類以父類的身份出現

第二:子類在工作時以自己的方式來實現

第三:子類以父類的方式出現時,子類特有的屬性和方法不可以使用

子類可以,將父類實現代替為自己的實現,這就是方法重寫override,或者叫做方法覆寫

物件的宣告必須時父類,而不是子類,例項化的物件時子類,這才是多型的實現。

多型的原理:當方法呼叫時,無論物件是否被轉換為其父類,都只有位於物件繼承鏈最末端的方法實現會被呼叫。

把不同子類中的相同方法提取到父類中,重新構建抽象類

利用abstract關鍵字把類和方法宣告為抽象類和抽象方法。

注意:第一:抽象類不能例項化

第二:抽象方法是必須被子類重寫的方法

第三:如果類包含了抽象方法,那麼類就必須定義為抽象類,不論是否包含其他一般方法。

定義抽象類需要考慮:讓抽象類擁有盡可能多的共同**,擁有盡可能少的資料。

什麼時間用抽象類:

抽象類通常代表乙個抽象概念,它提供乙個繼承的出發點,當設計乙個新的抽象類時,一定是用來繼承的,所以,在乙個繼承關係形成的等級結構裡,樹節點應當是具體類,而樹節點均應當是抽象類。

介面:是把隱士公共方法和屬性組合起來,以封裝特定功能的乙個集合。一旦類實現了介面,類就支援介面所指定的所有屬性和成員。宣告介面在語法上與抽象類完全相同,但是不允許提供介面中任何成員的執行方法。

實現介面的類就必須實現介面中所以的方法和屬性。

乙個類可以支援多個介面,多個類也可以支援相同的介面。

inte***ce修飾詞來實現介面

表象上來說: 抽象類可以給出一些成員的實現,介面卻不包含成員的實現;抽象類的抽象成員可以被子類部分實現,介面的成員需要實現類完全實現;乙個類只能繼承乙個抽象類。但是可以實現多個介面等等。

第一:類是對物件的抽象;抽象類是對類的抽象;介面是對行為的抽象。

第二:如果行為跨越不同的物件,可用介面;對於一些相似的類物件,可以繼承抽象類。

第三:從設計角度來講,抽象類是從子類中發現共同的東西,泛化出父類,然後子類繼承父類,而介面時根本不知道子類的存在,方法如何實現還不確定,預先定義。

4:抽象類是自底而上抽象出來的,而介面則是自頂而下設計出來的

實現介面和繼承抽象類並不衝突。

通過重構改善既有**的設計。

陣列優點:陣列在記憶體中連續儲存,因此可以快速而容易地從頭到尾遍歷元素,可以快速修改元素等等。

陣列缺點:建立時必須指定陣列變數的大小,還有兩個元素之間新增元素也比較困難。

集合: .net framework 提供了用於資料儲存和檢索的專用類,這些類統稱集合。這些類提供對堆疊,佇列,列表和雜湊表的支援。大多數集合實現相同的介面。

arraylist是命名空間system.collections下的一部分,他是使用大小可按需動態增加的陣列實現list介面。即list介面定義了很多集合用的方法,arraylist對這些方法做了集體的實現

arraylist的容量是arraylist可以儲存的元素數。arraylist的預設初始容量為0.隨著元素新增到arraylist中,容量會根據需要通過重新分配自動新增。使用整數索引可以訪問子集合中的元素。此集合中的索引從零開始。即陣列的容量使固定的,而arraylist集合的容量可以根據需要自動擴充。

集合的缺點:arraylist不是型別安全的。即典型的型別不匹配錯誤。

arryalist對於存放值型別的資料,比如int,string型或者結構struct的資料,用arraylist就意味著都需要將值型別裝箱為object物件,使用集合元素時,還需要執行拆箱操作,帶來很大的效能損耗。

使用方法:在list後面加,這個t就是你需要指定的集合的資料或物件型別。

通常情況下,都建議使用泛型集合,因為這樣可以帶來型別安全的直接優點而不需要從基集合型別派生並實現型別特點的成員。此外,如果集合元素為值型別,泛型集合型別的效能通常優於對應的非泛型集合型別(並優於從非泛型集合型別派生的型別),因為使用泛型時不必隨元素進行裝箱。

大話設計模式之物件導向基礎

a.2 類與例項 物件是乙個自包含的實體,用一組可識別的特性和行為來標識。物件導向程式設計 object oriented programming 類就是具有相同的屬性和功能的物件的抽象的集合。例項,就是乙個真實的物件。例項化就是建立物件的過程,使用new關鍵字來建立。a.3 構造方法 構造方法,又...

物件導向基礎 大話設計模式筆記

物件是自包含的實體,用一組可識別的特性和行為來標識 類是具有相同的屬性和功能的物件的抽象集合 例項化就是建立物件的過程 構造方法又稱建構函式,其實就是對類進行初始化。構造方法與類同名,無返回值,也不需要void,在new時候呼叫。方法過載提供建立同名的多個方法的能力,但這些方法需要使用不同的引數型別...

大話設計模式學習心得 物件導向基礎

從圖書館借了本大話設計模式,寒假好好啃啃。書的封面很像一本小兒漫畫書。呵呵。附錄a 物件導向基礎 類 具有相同屬性和功能的物件的抽象集合。相當於乙個模板。物件 是乙個自包含的實體。萬物皆物件。例項 乙個真實的物件。例項化 建立物件的過程。構造方法 對類進行初始化,與類同名,沒有返回值,在new的時候...