物件導向程式設計
物件導向程式設計
物件導向程式設計(oop)方法提供非常大的多樣性,大大增加**的重用機會
物件物件就是oop應用程式的乙個組成部件
1 屬性和字段
屬性和字段可以訪問物件中包含的資料
包含在物件中的不同資料統稱為物件的狀態
欄位和屬性都可以輸入,儲存資訊
屬性不能直接訪問資料,但能更好地控制整個過程
例如設定唯讀的屬性,或內容限制等
可以設定屬性和字段的可訪問性,包括公共,私有等
2 方法
方法用於表示物件中的函式
方法用於訪問物件的功能,也可設定可訪問性
一切都是物件
c#和.net framework中所有東西都是物件
物件的生命週期
在物件的生命週期中,除了「正在使用」的狀態外,還有:
構造階段:物件最初進行例項化的時期,由建構函式完成
析構階段:刪除乙個物件時,執行的一些清理工作,由析構函式完成
1 建構函式
物件的初始化過程是自動完成的,建構函式就是用於初始化資料的函式
所有物件都有乙個預設的建構函式,該函式沒有引數,與類本身有相同的名稱
乙個類可以包含多個建構函式,用於例項化物件
建構函式也可以設定公共或私有
在c#中建構函式用new關鍵字來呼叫
例如:string mystring = new string();
帶引數的建構函式:
string mystring = new string('a', 5);
2 析構函式
析構函式用於清理物件,一般情況下,不需要提供,而由預設析構函式執行清理
除了在刪除物件前,需要完成一些重要操作
靜態和例項類成員
靜態成員可以在類的例項之間共享,可看作是類的全域性物件
包括靜態方法、靜態屬性、靜態字段
在使用靜態成員時,甚至不需要例項化型別的物件
oop技術
介面介面是把隱式公共方法和屬性組合起來,以封裝特定功能的乙個集合
乙個類可以支援多個介面,多個類可以支援相同的介面
支援idisposable介面的物件必須提供和執行dispose()方法
當不再需要某個物件時,就呼叫來釋放資源
c#提供一種優化的方法:
using(= new ())
dispose()方法會在**塊末尾自動呼叫
繼承任何類都可以從另乙個類繼承,這個類就擁有它繼承的類的所有成員
在oop中,被繼承(派生)的類稱為父類(基類),c#中的物件僅能派生於乙個基類
可訪問性:公共成員,私有成員,保護成員
基類的成員可以是虛擬的,即成員可以由繼承它的類重寫
注意虛擬成員不能是私有成員
基類可以定義為抽象類
抽象類不能直接例項化,必須先繼承這個類才能使用
抽象類可以有抽象成員,抽象成員沒有**,執行**必須由派生類提供
類可以是密封的,密封的類不能被繼承
在c#中,所有的物件都有乙個共同的基類object
注意:介面,跟類不同,可以派生於多個介面
多型性多型性可以把某個基本型別的變數賦予其派生型別的變數
只要子類和孫子類在繼承層次結構中有乙個相同的類就可以使用多型性
例如:類classa有方法aa()
類classa的派生類classb有方法aa()和bb()
classa oa = new classb();
那麼oa.aa()執行的將是類classb的aa()
注意:不能以相同的方式呼叫派生類上定義的方法,如oa.bb()將不能執行
不過可以把基本型別的變數轉換為派生類變數,再呼叫派生類的方法
例如:classb ob = (classb)oa;
這時就可以呼叫ob.bb()
介面的多型性
物件之間的關係
除了繼承之外,物件之間還可以有其他關係:
包含關係:乙個類包含另乙個類
集合關係:乙個類用作另乙個類的多個例項的容器
包含關係
用乙個成員字段包含物件例項,就實現了包含關係。這個成員字段必須是公共字段
類似繼承,容器物件可以訪問它的方法和屬性
可以設定成員欄位為私有成員,使用者就不能直接訪問包含物件的成員
集合關係
類似陣列,物件可以儲存相同型別的多個例項
例如:classa oa = new classa[5];
運算子過載
事件物件可以啟用時間,作為他們處理的一部分
使用事件可以建立事件驅動的應用程式
引用型別和值型別
變數的型別分兩種:
值型別:在記憶體的乙個地方(稱為堆疊)儲存它們自己和它們的內容
引用型別:在記憶體的乙個地方(稱為堆)儲存乙個引用,而在另乙個地方儲存內容
結構結構型別和類的關鍵區別:結構型別是值型別
windows應用程式中的oop
C 入門經典學習8 物件導向
c 入門經典學習8 物件導向 類相當於模板 例項是物件 屬性字段方法 一切皆物件 靜態方法,靜態屬性,靜態字段 靜態與類相關,與例項無關。靜態建構函式不能有訪問修飾符,也不能帶任何引數,乙個類只能有乙個,只呼叫一次,建立例項或訪問靜態成員時呼叫。介面idisposable using自動呼叫disp...
C 快速入門筆記 物件導向程式設計
類定義 class box 物件定義 box box1 宣告 box1,型別為 box box box2 宣告 box2,型別為 box 用 運算子訪問資料成員 在類的外部使用範圍解析運算子 定義函式 double box getvolume void public 公有成員在程式中類的外部是可訪問...
C 學習筆記 物件導向程式設計
1.什麼是類 物件和成員?類 乙個類包含很多的物件。比如人類就是乙個類,張 三 李四等是人類的物件,這些物件擁有人類共同的功能和資料,如身高 體重 年齡等,而具體化這些資料我們可看做是人類的成員變數。所以類是由若干個變數和相關函式組成,而物件則擁有這些變數和函式。2.如何宣告乙個類?類只有先宣告才能...