




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第4章面向對象編程進階01類的繼承與多態02結構與接口03集合與索引器04異常處理05委托和匿名方法06事件07泛型1
類的繼承與多態繼承繼承的基本思想是基于某個基類的擴展,制定出一個新的派生類,派生類可以繼承基類原有的屬性和方法,也可以增加原來基類所不具備的屬性和方法,或者直接重寫基類中的某些方法。classTest2:Testbase關鍵字base關鍵字用于從派生類中訪問基類的成員,它主要有兩種使用形式,分別如下:調用基類上已被其他方法重寫的方法。指定創建派生類實例時應調用的基類構造函數?;恜ublicGoods(stringtradecode,stringfullname){TradeCode=tradecode;FullName=fullname;}派生類publicJHInfo(stringjhid,stringtradecode,stringfullname):base(tradecode,fullname){JHID=jhid;}繼承中的構造函數和析構函數
多態是面向對象編程的基本特征之一,它使得派生類的實例可以直接賦予基類的對象,然后直接就可以通過這個對象調用派生類的方法。C#中,類的多態性是通過在派生類中重寫基類的虛方法來實現的。多態基類publicvirtualvoidMove(){Console.WriteLine("{0}都可以移動",Name);}派生類publicoverridevoidMove(){Console.WriteLine("{0}在鐵軌上行駛",Name);}抽象類與抽象方法
如果一個類不與具體的事物相聯系,而只是表達一種抽象的概念或行為,僅僅是作為其派生類的一個基類,這樣的類就可以聲明為抽象類,在抽象類中聲明方法時,如果加上abstract關鍵字,則為抽象方法,抽象方法不提供具體的實現。publicabstractclassTestClass{publicabstractvoidAbsMethod();//抽象方法}密封類與密封方法
為了避免濫用繼承,C#中提出了密封類的概念。密封類可以用來限制擴展性,如果密封了某個類,則其他類不能從該類繼承;如果密封了某個成員,則派生類不能重寫該成員的實現。
如果類的方法聲明中包含sealed修飾符,則稱該方法為密封方法。密封方法只能用于對基類的虛方法進行實現,因此,聲明密封方法時,sealed修飾符總是和override修飾符同時使用。publicsealedclassJHInfo:Information//密封類{//將基類的虛方法重寫,并設置為密封方法publicsealedoverridevoidShowInfo(){Console.WriteLine("進貨信息:\n"+Code+""+Name);}}2
結構與接口
結構是一種值類型,通常用來封裝一組相關的變量,結構中可以包括構造函數、常量、字段、方法、屬性、運算符、事件和嵌套類型等。結構實際是將多個相關的變量包裝成為一個整體使用。在結構體中的變量,可以是相同、部分相同,或完全不同的數據類型。
C#中使用struct關鍵字來聲明結構。結構結構修飾符struct結構名{}語法修飾符interface接口名稱:繼承的接口列表{
接口內容;}接口語法
接口提出了一種契約(或者說規范),讓使用接口的程序設計人員必須嚴格遵守接口提出的約定。接口可以包含方法、屬性、索引器和事件作為成員,但是并不能設置這些成員的具體值,也就是說,只能定義。
C#中聲明接口時,使用interface關鍵字。接口的實現與繼承
定義
interfaceInformation{stringCode{get;set;} voidShowInfo();}
publicclassJHInfo:Information //繼承接口,定義進貨類{stringcode="";stringname="";publicstringCode //實現編號屬性{get{returncode;}set{code=value;}}publicvoidShowInfo() //實現方法,輸出進貨信息{Console.WriteLine(Code+""+Name);}}實現說明:接口中的成員默認是公共的,因此,不允許加訪問修飾符。顯式接口成員實現
如果類實現兩個接口,并且這兩個接口包含具有相同簽名的成員,那么在類中實現該成員將導致兩個接口都使用該成員作為它們的實現,然而,如果兩個接口成員實現不同的功能,那么這可能會導致其中一個接口的實現不正確或兩個接口的實現都不正確,這時可以顯式地實現接口成員,即創建一個僅通過該接口調用并且特定于該接口的類成員。顯式接口成員實現是使用接口名稱和一個句點命名該類成員來實現的。抽象類與接口抽象類和接口的區別主要有以下幾點:它們的派生類只能繼承一個基類,即只能直接繼承一個抽象類,但可以繼承任意多個接口。抽象類中可以定義成員的實現,但接口中不可以。抽象類中可以包含字段、構造函數、析構函數、靜態成員或常量等,接口中不可以。抽象類中的成員可以是私有的(只要它們不是抽象的)、受保護的、內部的或受保護的內部成員(受保護的內部成員只能在應用程序的代碼或派生類中訪問),但接口中的成員默認是公共的,定義時不能加修飾符。3
集合與索引器集合語法
集合類似于數組,是一組組合在一起的類型化對象,可以通過遍歷獲取其中的每個元素。接口說明ICollection定義所有非泛型集合的大小、枚舉數和同步方法IComparer公開一種比較兩個對象的方法IDictionary表示鍵/值對的非通用集合IDictionaryEnumerator枚舉非泛型字典的元素IEnumerable公開枚舉數,該枚舉數支持在非泛型集合上進行簡單迭代IEnumerator支持對非泛型集合的簡單迭代IList表示可按照索引單獨訪問的對象的非泛型集合ArrayList集合語法ArrayList類是一種非泛型集合類,它可以動態的添加和刪除元素。ArrayList類相當于一種高級的動態數組,它是Array類的升級版本,但它并不等同于數組。ArrayListlist=newArrayList();list.Add("筆記本電腦");list.Add("華為榮耀4X");list.Add("iPad平板電腦");foreach(stringnameinlist)Console.WriteLine(name);索引器【修飾符】【類型】this[【參數列表】]{get{get訪問器體}set{set訪問器體}}publicstringthis[intindex]{get{returnarrStr[index];}set{arrStr[index]=value; }}語法C#語言支持一種名為索引器的特殊“屬性”,它能夠通過引用數組元素的方式來引用對象。4
異常處理異常處理類語法System.Exception異常處理語句語法try…catch…finally語句try{
被監控的代碼}catch(異常類名
異常變量名){
異常處理}…finally{
程序代碼}throw語句throwExObject5
委托和匿名方法委托語法C#中的委托(Delegate)是一種引用類型,該引用類型與其它引用類型有所不同,在委托對象的引用中存放的不是對數據的引用,而是存放對方法的引用,即在委托的內部包含一個指向某個方法的指針。通過使用委托把方法的引用封裝在委托對象中,然后將委托對象傳遞給調用引用方法的代碼。【修飾符】
delegate
【返回類型】【委托名稱】(【參數列表】)語法匿名方法
匿名方法允許一個與委托關聯的代碼被內聯地寫入使用委托的位置,這使得代碼對于委托的實例很直接。除了這種便利之外,匿名方法還共享了對本地語句包含的函數成員的訪問。delegate(【參數列表】){
【代碼塊】}語法6
事件主要內容
委托的發布和訂閱
事件的發布和訂閱
EventHandler類
Windows事件概述01020304委托的發布和訂閱語法
通過委托實現事件處理的過程,通常需要以下4個步驟:(1)定義委托類型,并在發布者類中定義一個該類型的公有成員。(2)在訂閱者類中定義委托處理方法。(3)訂閱者對象將其事件處理方法鏈接到發布者對象的委托成員(一個委托類型的引用)上。(4)發布者對象在特定的情況下“激發”委托操作,從而自動調用訂閱者對象的委托處理方法。事件的發布和訂閱語法C#提供了專門的事件處理機制,以保證事件訂閱的可靠性,其做法是在發布委托的定義中加上event關鍵字,其它代碼不變。publiceventRingEventOnBellSound;EventHandler類
在事件發布和訂閱的過程中,定義事件的類型(即委托類型)是一件重復性的工作,為此,.NET類庫中定義了一個EventHandler委托類型,并建議盡量使用該類型作為事件的委托類型。publicdelegatevoidEventHandler(objectsender,EventArgse);Windows事件概述
事件在Windows這樣的圖形界面程序中有著極其廣泛的應用,事件響應是程序與用戶交互的基礎。用戶的絕大多數操作,如移動鼠標、單擊鼠標、改變光標位置、選擇菜單命令等,都可以觸發相關的控件事件。publicForm1(){InitializeComponent();
button1.Click+=newEventHandler(button1_Click);
}privatevoidbutton1_Click(objectsender,EventArgse){this.Close();}7
泛型主要內容
類型參數T
泛型接口
泛型方法010203類型參數T
泛型的類型參數T可以看作是一個占位符,它不是一種類型,它僅代表了某種可能的類型。在定義泛型時,T出現的位置可以在使用時用任何類型來代替。類型參數T的命名準則如下:使用描述性名稱命名泛型類型參數,除非單個字母名稱完全可以讓人了解它表示的含義,而描述性名稱不會有更多的意義。例如,使用代表一定意義的單詞作為類型參數T的名稱,代碼如下:publicinterfaceIStudent<TStudent>publicdelegatevoidShowInfo<TKey,TValue>將T作為描述性類型參數名的前綴。例如,使用T作為類型參數名的前綴,代碼如下:publicinterfaceIStudent<T>{
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年小學英語能力測試試題及答案
- 2025年糧食安全與農業發展考試試題及答案
- 2025年國家安全法相關知識測試卷及答案
- 2025年公共英語等級考試試卷及答案
- 2025年供應鏈金融理論與實踐考試試題及答案
- 物資管理計劃管理制度
- 物資驗收安全管理制度
- 特殊員工工時管理制度
- 特殊學生安全管理制度
- 特殊氣體存放管理制度
- 企業標準化體系建立課件
- 醫院護士辭職申請書集合六篇(護士崗位辭職申請書)
- 靜脈注射 Microsoft PowerPoint 演示文稿課件
- 同濟大學論文答辯通用PPT模板
- AFC檢測技術規程
- 部編人教版二年級下學期數學期末學業質量監測復習課堂知識練習題
- 餐飲行業抖音代運營方案
- 《聰明人和傻子和奴才》 課件
- Fleischner指南解讀
- 建筑工地安全生產百日攻堅行動實施方案
- 電廠度電機維修技術規范書正式
評論
0/150
提交評論