C 物件導向程式設計基礎知識總結 西南煙雨

2021-09-08 02:29:28 字數 3263 閱讀 8847

1。類與例項(物件導向程式設計--object-oriented programming)物件是乙個自包含的實體,用一組可識別的特性和行為來表示。類就是具有相同的屬性和功能的物件的抽象的集合。例項就是真實的對 象,例項化就是建立物件的過程,使用new關鍵字類建立。

2。構造方法構造方法又叫建構函式,其實就是對類進行初始化。構造方法與類同名,無返回值,也不需要void, 在new時候呼叫。所有類都有構造方 法,如果你不編碼則系統預設生成空的構造方法,若你 有定義的構造方法,那麼預設的構造方法就會失效了。

3。方法過載方法過載提供了建立同名的多個方法的能力,但這些方法需要使用不同的引數型別。(並不是只有構造方 法可以過載,普通方法也是可以過載的)方法過載時,兩個方法必須要方法名相同,但引數型別或個數必須要有所不同。

4。屬性與修飾符屬性是乙個方法或一對方法,但在呼叫它的**看來,它是乙個字段,即屬性適合於以字段的方式使 用方法呼叫的場合。欄位是儲存類要滿足其設計所需要的資料,欄位是與類相關的變數。

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

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

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

第三,類具有清晰的對外介面。

6。繼承物件的繼承代表了一種『is-a』的關係,如果物件a和b,可以描述為『b』是『a』,則表明b可以繼 承a。實際上,繼承者可以理解為是對 被繼承者的特殊化,因為它除了具有被繼承者的特性外,還具有自己獨有的個性。

如果子類繼承於父類,第一,子類擁有分類非private的屬性和功能;第二,子類具有自己的屬性和功能,即子類可以擴充套件父類沒有的屬性和功能;第 三,子類還可以以自己的方式實現父類的功能(方法重寫)子類從它的父類中繼承的成員有方法,域,屬性,事件,索引指示器,但對於構造方法,有一些 特

殊它不能被繼承,只能被呼叫。對於呼叫父類的成員,可以用base關鍵字。繼承是有缺點的,那就是父類變,則子類不得不變;繼承會破壞包裝,父類實 現細節暴露給子類,其實質是增大了兩個類間的耦合性。當兩個類之間具備『is-a』的關係時,就可以考慮用繼承了,但當是『has-a』關係時就不適合用 繼承了。

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

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

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

第三,子類以父類的身份出現時,子類特有的屬性和方法不可以使用。為了使子類的例項完全接替來自父類的成員,父類必須將該成員宣告為虛擬的。

(virtual)通常除了字段不能虛擬其他屬性,事件,索引器,方法都可以虛擬。子類可以使用override關鍵字,將父類實現替換為自己的實 現,這就是方法重寫override或叫做方法覆蓋。多型時對物件的宣告必須是父類,而不是子類,例項化的物件是子類,這樣才能實現多型。不同的物件可以 執行相同的動 作,但要通過它們自己的實現**來執行。多型的原理是當方法被呼叫時,無論物件是否被轉換為其父類,都只有位於物件繼承鏈最末端的方法實現會被呼叫。也就 是 說,虛方法是按照其執行時型別而非編譯時型別進行動態繫結呼叫的。

8。抽象類(abstract)c#執行把類和方法宣告為abstract,即抽象類和抽象方法 (abstract)

第一,抽象類不能例項化;

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

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

抽象類擁有盡可能多的共同**,擁有盡可能少的資料。抽象類通常代表乙個抽象概念,它提供乙個繼承的出發點,當設計乙個新的抽象類時,一定是用來繼 承的,所以,在乙個以繼承關係形成的等級結構裡面,樹葉節點應當是具體類,而樹枝節點均應當是抽象類。也就是說具體的類不是用來繼承的

9。介面(inte***ce)介面是把隱式公共方法和屬性組合起來,以封裝特定功能的乙個集合。一旦類實現了 介面,類就可以支援介面所指定的所有 屬性和成員。

宣告介面在語法上與宣告抽象類完全相同,但不允許提供介面中任何成員的執行方式。所以介面不能例項化,不能有構造方法和字段;不能有修飾符 (eg:public,private)不能宣告虛擬的或靜態的等。實現介面的類就必須要實現介面中所有方法和屬性。乙個類可以支援多個介面,多個類也可 以支援相同的介面。

介面用inte***ce宣告,而不是class,介面名稱前要加『i',介面中的方法或屬性前面不能有修飾符,方法沒有方法體。抽象類與介面的異 同抽象類可以給出一些成員的實現,介面卻不包含成員的實現;抽象類的抽象成員可以被子類部分實現,介面的成員需要實現類完全實現;乙個類只能繼承乙個抽象 類,但可以實現多個介面;

第一,類時對物件的抽象;抽象類時對類的抽象;介面是對行為的抽象。介面是對類的區域性(行為)進行的抽象,而抽象類是對類整體(字段,屬性,方法) 的抽象。

如果只關注行為抽象,那麼可以認為介面就是抽象類。總之,不論是介面,抽象類,類甚至是物件,都是在不同層次,不同角度進行抽象的結果,他們的共性 就是抽象

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

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

10。集合(arraylist)可以根據使用大小按需求動態增加,不用受事先設定其大小的控制。還有就是可以 隨意地新增,插入或移除某一範圍元 素,比陣列要方便。

arraylist 不是型別安全的(值型別裝箱到object物件)裝箱就是把值型別打包到object引用型別的乙個例項中。拆箱是指從物件中提取型別。

11.泛型是具有佔位符(型別引數)的類,結構,介面和方法,這些佔位符是類,結構,介面和方法所儲存或使用的 乙個或多個型別的佔位符。

泛型集合類可以將引數型引數用作它所儲存的物件的型別的佔位符;型別引數作為其字段的型別和其方法的引數型別出現。通常情況下,都建議使用泛型集 合,因為我這樣可以獲得型別安全的直接優點而不需要從基集合型別派生並實現型別特定的成員。

此外,如果集合元素為值型別,泛型集合型別的效能通常優於對應的非泛型集合型別(並優於從非泛型基集合型別派生的型別),因為使用泛型時不必對元素 進行裝箱。

12。委託和事件(delegate,event)委託時對函式的封裝,可以當作給方法的特徵指定乙個名稱。而事件則是委託的一種特殊形式,當發生 有意義的事情時,事件物件處理通知過程。委託是一種引用方法的型別。一旦為委託分配了方法,委託將與該方法具有完全相同的行為。在發生其他類或物件關注的 事情時,類或物件可通過事件通知它們。

物件導向基礎知識

物件導向三大特性 封裝 繼承 多型 1.多型 多型表示不同的子類可以執行相同的動作,但是要通過它們自己的實現 來執行。為了使子類的例項完全接替來自父類的類成員,父類必須通過virtual關鍵字將該成員宣告為虛擬的,子類可以選擇使用override關鍵字,將父類實現替換為自己的實現,叫方法重寫或覆寫。...

物件導向基礎知識

物件導向 程式分為兩種,一種是面向過程的,另一種是物件導向的。之前的學的都是面向過程的,按部就班的一步一步的按照順序往下走。物件導向 1.什麼叫做物件 一切皆為物件 乙個物件由一組屬性和有權對這些屬性進行操作的一組服務的封裝體 2.什麼叫做類 類是具有相同屬性和服務的一組物件的集合。做類class ...

c 基礎知識 封裝 物件導向

繼承public private和protected跟c 一樣,internal表示同乙個程式集的物件可以訪問 protected internal表示當前程式集 本類和派生類中可以訪問。比如成員變數宣告為 using system namespace declaration.可能不止乙個 name...