C 物件導向基礎

2021-07-25 16:17:41 字數 2898 閱讀 6415

1. 類和例項

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

例項,就是乙個真實的物件,例項化就是建立物件的過程,使用new關鍵字來建立。

class cat

}private void button1_click(object sender, eventargs e)

2. 構造方法

構造方法,又叫建構函式,其實就是對類進行初始化。構造方法與類名相同,無返回值,也不需要

void ,在new的時候呼叫。

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

class cat

public string shout()

}private void button1_click(object sender, eventargs e)

3 方法的過載

方法過載提供了建立同名的多個方法的能力,但這些方法使用不同的引數型別。注意並不是只是有構造方法可以過載,普通的方法

也是可以過載的。

class cat

public cat()

public string shout()

}

注意方法過載時,兩個方法必須要有方法名相同,但引數的型別或個數必須要有所不同。否則過載就沒有意義了。

4. 屬性和修飾符

public :表示它所修飾的類成員可以允許其他任何類來訪問,俗稱共有的。

private:表示只允許同乙個類中的成員訪問,其他的類包括它的子類無法訪問。俗稱私有的。

5. 封裝

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

封裝的好處?

1. 良好的封裝能夠減少耦合。

2. 類內部的實現可以自由的修改。

3. 具有清晰的對外介面。

6. 繼承

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

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

學習繼承最好是記住三句話:

1. 子類擁有父類非private的屬性和功能;

2. 子類具有自己的屬性和功能,即子類可以擴充套件父類沒有的屬性和功能。

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

protect 表示繼承時子類可以對基類有完全訪問權。也就是說protect修飾的類成員,對子類公開

但對其他的類不公開。

不用繼承的話,如果要修改功能,就必須在所有重複的方法中修改,**越多,出錯的可能就越大,也繼承的優點

繼承使得所有子類公共的部分都放在了父類,使得**得到了共享,這就避免了重複,另外,繼承可使得修改或擴充套件繼承

而來的實現都較為容易。

繼承的缺點:

1. 父類變,則子類不得不變。 2. 繼承會破壞包裝,父類實現細節暴露給子類。增加了2個類的耦合。

耦合:簡單的理解就是藕斷絲連的意思,兩個類儘管是分開的,但如果關係密切,一方的變化會影響到另一方,這就是

耦合性高的表現,繼承顯然是一種類與類之間強耦合的關係。

7. 多型

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

1. 子類以父類的身份出現

2. 子類在工作時以自己的方式來實現

3. 子類以父類的身份出現時,子類特有的屬性和方法不可以使用。

8. 重構

9. 集合

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

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

arraylist的容量是arraylist可以儲存的元素數, arraylist的預設初始容量為0,隨著元素新增到arraylist中,容量

會根據需要通過重新分配自動增加,使用整數索引可以訪問集合中的元素。此集合的索引從零開始。

即: 資料的容量是固定的,而 arraylist 的容量可以根據需要自動擴充。

集合arraylist 相比資料有什麼好處?

主要就是它可以根據使用大小按需動態增加,不用受事先設定其大小的控制。還有就是可以隨意的新增,插入,或

移除某一範圍元素,比陣列要方便。

arraylist 不是型別安全的。還有就是就是arraylist對於存放值型別的資料,比如:int string 型或者結構struct

的資料,用arraylist就意味著都需要將值型別裝箱為object物件,使用集合的元素的時候,還需要執行拆箱操作,這就帶來

了很大的效能損耗。裝箱和拆箱  就是強制型別轉換的意思。

相對於簡單的賦值而言,裝箱和拆箱過程需要進出大量的計算。對值型別進行裝箱時,必須分配並構造乙個

全新的物件。其次,裝箱所需的強制轉換也需要進行大量的計算[msdn].

10 泛型

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

的乙個或多個型別的佔位符。泛型集合類可以將型別引數作它所儲存的物件的型別的佔位符;型別引數作為其字段的型別

和其他方法的引數型別出現。

通常情況下,都建議使用泛型集合,因為這樣可以獲得型別安全的直接優點而不需要從集合型別派生並實現

型別特定的成員。此外,如果集合元素為值型別,泛型集合型別的效能通常優於對應的非泛型集合型別(並優於

非泛型集合型別派生的型別),因此使用泛型時不必對元素進行裝箱。

11. 委託於事件

委託是對函式的封裝, 可以當做給方法的特徵指定乙個名稱。而事件則是委託的一種特殊形式,當發生有意義

的事情時,事件物件處理通知過程。

c 物件導向基礎

物件導向程式設計一般分為兩個檔案,標頭檔案和原始檔,例如乙個person 類,分為person.h和person.cpp person.h中有類,函式的宣告 pragma once 該檔案不會被編譯多次 include 引入string include person.h using namespac...

c 物件導向基礎

物件導向是一種負荷人類思維習慣的變成思維。物件導向的思想有三大特徵 封裝性,繼承性和多型性。前兩個特徵比較好理解,多型性說白了就是子類重複父類的虛函式。類與物件 類是對某一類事物的抽象描述,物件用於表示現實中該類事物的個體。物件導向的思想中最核心的就是物件,為了在程式中建立物件,首先需要定義乙個類。...

C 基礎 物件導向

1 基本概念 類 物件 屬性 方法物件是類的乙個例項,物件具有屬性和方法 2 訪問修飾符 private 私有成員,在類的內部才可以訪問。protected 保護成員,該類內部和繼承類中可以訪問。public 公共成員,完全公開,沒有訪問限制。internal 當前程式集內可以訪問。通過使用訪問修飾...