第3章 類和結(jié)構(gòu)_第1頁
第3章 類和結(jié)構(gòu)_第2頁
第3章 類和結(jié)構(gòu)_第3頁
第3章 類和結(jié)構(gòu)_第4頁
第3章 類和結(jié)構(gòu)_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

教育部普通高等教育十二五國(guó)家級(jí)規(guī)劃教材

《C#程序設(shè)計(jì)及應(yīng)用教程》第3版

(包括簡(jiǎn)化版:《C#程序設(shè)計(jì)教程》第3版)

第3章類和結(jié)構(gòu)2Ch3類和結(jié)構(gòu)3.1自定義類(class)和結(jié)構(gòu)(struct)3.2屬性和方法3.3類的繼承與多態(tài)性3.4常用結(jié)構(gòu)和類的用法(課后自學(xué))

3.1自定義類(class)和結(jié)構(gòu)(struct)

3.1.1類的定義和成員組織3.1.2訪問修飾符3.1.3靜態(tài)成員和實(shí)例成員3.1.4構(gòu)造函數(shù)和析構(gòu)函數(shù)3.1.5字段和局部變量3.1.6結(jié)構(gòu)的定義和成員組織343.1.1類的定義和成員組織類:定義對(duì)象具有的特征(字段、屬性等)和可執(zhí)行的操作(方法、事件等)。例如:某單位的員工是一個(gè)類,則該單位的張三、李四和王五等都是對(duì)象(員工的實(shí)例).

自定義類的常用形式:

[訪問修飾符][static]class類名[:基類[,接口序列]]{[類成員]}類成員:包括字段、屬性、構(gòu)造函數(shù)、方法、事件、運(yùn)算符、索引器、析構(gòu)函數(shù)等。53.1.2訪問修飾符類和類的成員都可以使用下面的訪問修飾符。public:類的內(nèi)部和外部代碼都可以訪問。private:類的內(nèi)部可訪問,類的外部無法訪問。如果省略類成員的訪問修飾符,默認(rèn)為private。(Java語言默認(rèn)為protected)internal:同一個(gè)程序集中的代碼都可以訪問,程序集外的其他代碼無法訪問。如果省略類的訪問修飾符,默認(rèn)為internal。(Java中無此關(guān)鍵字)protected:類的內(nèi)部或者從該類繼承的子類可以訪問。protectedinternal:從該類繼承的子類或者從另一個(gè)程序集中繼承的類都可以訪問。請(qǐng)大家看書P69頁下方Person類的例子6partial修飾符:包含partial修飾符的類稱為分部類。可將類的定義分布在多個(gè)文件中,編譯器編譯帶有partial修飾符的類時(shí),會(huì)自動(dòng)將這些文件合并在一起。可隔離自動(dòng)生成的代碼和人工書寫的代碼。(在Win窗體應(yīng)用程序和WPF中有應(yīng)用)例如:可將一個(gè)類(類名為:MyClass)的編寫工作同時(shí)分配給3個(gè)人,每人負(fù)責(zé)寫一個(gè)文件,文件名可以分別為MyClassP1.cs、MyClassP2.cs和MyClassP3.cs,每個(gè)文件內(nèi)都用下面的形式定義MyClass類:這樣就可讓多個(gè)人同時(shí)在一個(gè)類中分別實(shí)現(xiàn)自己的代碼,而且還能相互看到其他文件中MyClass類定義的成員(屬性、方法等)。

3.1.2訪問修飾符publicpartialclassMyClass{ //……}3.1.2訪問修飾符【例3-1】演示如何聲明類、字段、構(gòu)造函數(shù)和方法,同時(shí)說明如何實(shí)例化對(duì)象、如何使用分部類以及如何輸出實(shí)例數(shù)據(jù)7請(qǐng)大家看書P71頁下方Student類的例子83.1.3靜態(tài)成員和實(shí)例成員通過類名調(diào)用靜態(tài)成員,通過實(shí)例名調(diào)用實(shí)例成員。1.static關(guān)鍵字表示類或成員加載到內(nèi)存中只有一份,而不是有多個(gè)實(shí)例。當(dāng)垃圾回收器檢測(cè)到不再使用該靜態(tài)成員時(shí),會(huì)自動(dòng)釋放其占用的內(nèi)存??捎糜陬悺⒆侄?、方法、屬性、運(yùn)算符、事件和構(gòu)造函數(shù),但不能用于索引器、析構(gòu)函數(shù)或者類以外的類型。靜態(tài)字段有兩個(gè)常見的用法:一是記錄已實(shí)例化對(duì)象的個(gè)數(shù),二是存儲(chǔ)必須在所有實(shí)例之間共享的值。靜態(tài)方法可以被重載但不能被重寫,因?yàn)樗鼈儗儆陬?,而不屬于類的任何?shí)例。93.1.3靜態(tài)成員和實(shí)例成員2.靜態(tài)類聲明自定義類時(shí)如果加上static關(guān)鍵字,則該類就是靜態(tài)類。靜態(tài)類的主要特點(diǎn):僅包含靜態(tài)成員。無法實(shí)例化。這與在非靜態(tài)類中定義私有構(gòu)造函數(shù)可阻止類被實(shí)例化的機(jī)制相似。是密封的,因此不能被繼承。不能包含實(shí)例構(gòu)造函數(shù),但可以包含靜態(tài)構(gòu)造函數(shù)。如果非靜態(tài)類包含需要進(jìn)行重要的初始化的靜態(tài)成員,也應(yīng)定義靜態(tài)構(gòu)造函數(shù)。103.1.4構(gòu)造函數(shù)和析構(gòu)函數(shù)構(gòu)造函數(shù):是創(chuàng)建對(duì)象時(shí)自動(dòng)調(diào)用的函數(shù)。一般在構(gòu)造函數(shù)中做一些初始化工作,或者做一些僅需執(zhí)行一次的特定操作。構(gòu)造函數(shù)沒有返回類型,并且它的名稱與其所屬的類的名稱相同。C#支持兩種構(gòu)造函數(shù):實(shí)例構(gòu)造函數(shù)和靜態(tài)構(gòu)造函數(shù)。1.實(shí)例構(gòu)造函數(shù)每創(chuàng)建一個(gè)對(duì)象,都會(huì)先通過new關(guān)鍵字指明調(diào)用的構(gòu)造函數(shù),這種構(gòu)造函數(shù)稱為實(shí)例構(gòu)造函數(shù)。例如:Childchild=newChild();這條語句的Child()就是被調(diào)用的實(shí)例構(gòu)造函數(shù)。113.1.4構(gòu)造函數(shù)和析構(gòu)函數(shù)2.靜態(tài)構(gòu)造函數(shù)(了解即可)如果構(gòu)造函數(shù)聲明包含static修飾符,則為靜態(tài)構(gòu)造函數(shù),否則為實(shí)例構(gòu)造函數(shù)。創(chuàng)建第一個(gè)實(shí)例或引用任何靜態(tài)成員之前,CLR會(huì)自動(dòng)調(diào)用靜態(tài)構(gòu)造函數(shù)。例如: classSimpleClass { staticreadonlylongbaseline; staticSimpleClass() { baseline=DateTime.Now.Ticks; } }123.1.4構(gòu)造函數(shù)和析構(gòu)函數(shù)靜態(tài)構(gòu)造函數(shù)的特點(diǎn):靜態(tài)構(gòu)造函數(shù)既沒有訪問修飾符,也沒有參數(shù)。在創(chuàng)建第一個(gè)實(shí)例或引用任何靜態(tài)成員之前,CLR會(huì)自動(dòng)調(diào)用靜態(tài)構(gòu)造函數(shù)來初始化類。換言之,靜態(tài)構(gòu)造函數(shù)是在實(shí)例構(gòu)造函數(shù)之前執(zhí)行的。程序員無法直接調(diào)用靜態(tài)構(gòu)造函數(shù),也無法控制何時(shí)執(zhí)行靜態(tài)構(gòu)造函數(shù)靜態(tài)構(gòu)造函數(shù)僅調(diào)用一次。如果靜態(tài)構(gòu)造函數(shù)引發(fā)異常,在程序運(yùn)行所在的應(yīng)用程序域的生存期內(nèi),類型將一直保持未初始化的狀態(tài)。133.1.3構(gòu)造函數(shù)和析構(gòu)函數(shù)3.默認(rèn)構(gòu)造函數(shù)和私有構(gòu)造函數(shù)每個(gè)類要求必須至少有一個(gè)構(gòu)造函數(shù)。如果代碼中沒有聲明構(gòu)造函數(shù),則系統(tǒng)會(huì)自動(dòng)為該類提供一個(gè)不帶參數(shù)的空的構(gòu)造函數(shù),這種自動(dòng)提供的構(gòu)造函數(shù)稱為默認(rèn)構(gòu)造函數(shù)。構(gòu)造函數(shù)一般用public修飾符,但也可以用private創(chuàng)建私有構(gòu)造函數(shù)。私有構(gòu)造函數(shù)是一種特殊的構(gòu)造函數(shù),通常用在只包含靜態(tài)成員的類中,用來阻止該類被實(shí)例化。如果不指定構(gòu)造函數(shù)的訪問修飾符,默認(rèn)是private。但是,一般都顯式地使用private修飾符來清楚地表明該類不能被實(shí)例化。4.重載構(gòu)造函數(shù)構(gòu)造函數(shù)可以被重載(Overloading),但不能被繼承。請(qǐng)看書P74頁中間部分的說明143.1.4構(gòu)造函數(shù)和析構(gòu)函數(shù)5.析構(gòu)函數(shù)和自動(dòng)內(nèi)存管理(了解即可)析構(gòu)函數(shù)析構(gòu)函數(shù)是一種用于實(shí)現(xiàn)銷毀類實(shí)例所需操作的成員。析構(gòu)函數(shù)不能帶參數(shù),也不能包含訪問修飾符。析構(gòu)函數(shù)是自動(dòng)調(diào)用的,不能顯式調(diào)用析構(gòu)函數(shù)。自動(dòng)內(nèi)存管理由C#使用垃圾回收器實(shí)現(xiàn),即自動(dòng)決定何時(shí)釋放和銷毀內(nèi)存。如果聲明了析構(gòu)函數(shù),開發(fā)人員也可通過System.GC的靜態(tài)方法在一定程度上控制垃圾回收器的行為。該類可用于請(qǐng)求執(zhí)行一次回收操作、并自動(dòng)判斷是否應(yīng)該執(zhí)行析構(gòu)函數(shù)。153.1.5字段和局部變量字段是類的成員,局部變量是塊的成員。1.字段(即:私有的類成員屬性)字段是指在類或結(jié)構(gòu)中聲明的“類級(jí)別”的變量。或者說,字段是整個(gè)類內(nèi)部的所有方法和事件中都可以訪問的變量。2.只讀字段(readonly)readonly關(guān)鍵字用于聲明可以在程序運(yùn)行期間只能初始化“一次”的字段。初始化的方法有兩種,一種是在聲明語句中初始化該字段,另一種是在構(gòu)造函數(shù)中初始化該字段。3.局部變量局部變量是相對(duì)于字段來說的??梢詫⒕植孔兞坷斫鉃椤皦K”級(jí)別的變量。請(qǐng)看P76頁上方的小例子請(qǐng)看P76頁中間的小例子163.1.6結(jié)構(gòu)的定義和成員組織結(jié)構(gòu)是值類型,它和類的主要區(qū)別是結(jié)構(gòu)中的數(shù)據(jù)保存在堆棧(Stack)中而不是保存在堆(Heap)中。另外,所有結(jié)構(gòu)都隱式地從Object繼承,但自定義結(jié)構(gòu)時(shí),不能從其他結(jié)構(gòu)繼承。結(jié)構(gòu)成員和類成員相同,包括字段、屬性、構(gòu)造函數(shù)、方法、事件、運(yùn)算符、索引器、析構(gòu)函數(shù)等。【例3-2】分別用類和結(jié)構(gòu)定義具有x、y坐標(biāo)的點(diǎn),然后在主程序中各創(chuàng)建并初始化一個(gè)含有10個(gè)點(diǎn)的數(shù)組。結(jié)構(gòu)對(duì)于具有值語義的小型數(shù)據(jù)尤為有用17183.2屬性和方法3.2.1屬性(Property)3.2.2方法193.2.1屬性(Property)屬性(property)是字段的擴(kuò)展,用于提供對(duì)字段讀寫的手段。屬性和字段的區(qū)別是:屬性通過get訪問器和set訪問器指定讀寫字段的值時(shí)需要執(zhí)行的語句,具體地: i.對(duì)外公開某字段的訪問權(quán)限(“讀”方法:“get”) ii.對(duì)字段的修改進(jìn)行驗(yàn)證(“寫”方法:“set”)1.常規(guī)屬性聲明如果需要對(duì)外公開某些字段,并對(duì)字段的值進(jìn)行驗(yàn)證,可以利用屬性的get和set訪問器來實(shí)現(xiàn)。2.自動(dòng)實(shí)現(xiàn)的屬性自動(dòng)實(shí)現(xiàn)的屬性是指開發(fā)人員只需要聲明屬性,而與該屬性對(duì)應(yīng)的字段則由系統(tǒng)自動(dòng)提供。自動(dòng)實(shí)現(xiàn)的屬性必須同時(shí)聲明get和set訪問器。請(qǐng)看書P79頁上方例子和中間的三段說明!203.2.2方法方法是類或結(jié)構(gòu)的一種成員,是一組程序代碼的集合,用于完成指定的功能。每個(gè)方法都有一個(gè)方法名,便于識(shí)別和讓其他方法調(diào)用。1.方法的聲明和參數(shù)傳遞定義方法的一般形式為

[訪問修飾符]返回值類型

方法名([參數(shù)序列]) { [語句序列] }方法聲明中的參數(shù)用于向方法傳遞值或變量引用。方法的參數(shù)從調(diào)用該方法時(shí)指定的實(shí)參獲取實(shí)際值。有四類參數(shù):值參數(shù)、引用參數(shù)、輸出參數(shù)和參數(shù)數(shù)組。213.2.2方法(1)值參數(shù)值參數(shù)(valueparameter)用于傳遞輸入?yún)?shù)。一個(gè)值參數(shù)相當(dāng)于一個(gè)局部變量,只是它的初始值來自為該形參傳遞的實(shí)參。【例3-3】演示值參數(shù)的基本用法??磿鳳80頁下方例子,注意指定參數(shù)默認(rèn)值的情況223.2.2方法(2)引用參數(shù)

引用參數(shù)(referenceparameter)用于傳遞輸入和輸出參數(shù)。為引用參數(shù)傳遞的實(shí)參必須是變量,并且在方法執(zhí)行期間,引用參數(shù)與實(shí)參變量表示同一存儲(chǔ)位置。引用參數(shù)使用ref修飾符聲明?!纠?-4】演示引用參數(shù)的基本用法。當(dāng)將值類型作為引用參數(shù)傳遞時(shí),必須使用ref關(guān)鍵字。對(duì)于引用類型來說,可省略ref關(guān)鍵字233.2.2方法(3)輸出參數(shù)輸出參數(shù)(outputparameter)用于傳遞返回的參數(shù),用out關(guān)鍵字聲明。格式為

out參數(shù)類型

參數(shù)名【例3-5】演示out關(guān)鍵字的用法。請(qǐng)看書P82頁上方的例子,注意out關(guān)鍵字的用法243.2.2方法(4)參數(shù)數(shù)組

參數(shù)數(shù)組用于向方法傳遞可變數(shù)目的實(shí)參,用params關(guān)鍵字聲明。如果方法有多個(gè)參數(shù),只有最后一個(gè)參數(shù)才可以用參數(shù)數(shù)組聲明,并且參數(shù)數(shù)組的類型必須是一維數(shù)組類型。【例3-6】演示params關(guān)鍵字的基本用法。當(dāng)需要傳遞的參數(shù)的個(gè)數(shù)不確定時(shí)使用。253.2.2方法2.方法重載

***方法重載是指具有相同的方法名,但參數(shù)類型或參數(shù)個(gè)數(shù)不完全相同的多個(gè)方法可以同時(shí)出現(xiàn)在一個(gè)類中。這種技術(shù)非常有用,在項(xiàng)目開發(fā)過程中,我們會(huì)發(fā)現(xiàn)很多方法都需要使用方法重載來實(shí)現(xiàn)。請(qǐng)看書P83頁下方的例子263.3類的繼承與多態(tài)性3.3.1封裝(簡(jiǎn)單復(fù)習(xí))3.3.2繼承(簡(jiǎn)單復(fù)習(xí))3.3.3多態(tài)(new、virtual、override)273.3.1封裝封裝一個(gè)類時(shí),既可以像定義一個(gè)普通的類一樣,也可以將類聲明為抽象類或者密封類。1.抽象類(abstractclass)抽象類使用abstract修飾符來描述,用于表示該類中的成員(例如方法)不一定實(shí)現(xiàn),即可以只有聲明部分而沒有實(shí)現(xiàn)部分。抽象類只能用做其他類的基類,而且無法直接實(shí)例化抽象類。2.密封類(sealed)密封類是指不能被其他類繼承的類。在C#語言中,用sealed修飾符聲明密封類。由于密封類不能被其他類繼承,因此系統(tǒng)就可以在運(yùn)行時(shí)對(duì)密封類中的內(nèi)容進(jìn)行優(yōu)化,從而提高系統(tǒng)的性能。283.3.2繼承繼承用于簡(jiǎn)化類的設(shè)計(jì)工作量,同時(shí)還能避免設(shè)計(jì)的不一致性。一般將公共的、相同的部分放在被繼承的類中,非公共的、不相同的部分放在繼承的類中。1.類繼承的一般形式在C#中,用冒號(hào)(“:”)表示繼承。被繼承的類叫基類或者父類,從基類繼承的類叫擴(kuò)充類,又叫派生類或者子類。繼承意味著一個(gè)類隱式地將它的基類的所有成員當(dāng)作自已的成員,而且派生類還能夠在繼承基類的基礎(chǔ)上繼續(xù)添加新的成員。但是,基類的實(shí)例構(gòu)造函數(shù)、靜態(tài)構(gòu)造函數(shù)和析構(gòu)函數(shù)除外。擴(kuò)充類不能繼承基類中所定義的private成員,只能繼承基類的public成員或protected成員。293.3.2繼承2.繼承過程中構(gòu)造函數(shù)的處理擴(kuò)充類可繼承基類中聲明為public或protected的成員。構(gòu)造函數(shù)在擴(kuò)充類中不會(huì)被繼承下來。如果讓構(gòu)造函數(shù)也能繼承,由于擴(kuò)充類中無法訪問基類的私有成員,從而導(dǎo)致程序運(yùn)行失敗。C#在內(nèi)部按照下列順序處理構(gòu)造函數(shù):從擴(kuò)充類依次向上尋找其基類,直到找到最初的基類,然后開始執(zhí)行最初的基類的構(gòu)造函數(shù),再依次向下執(zhí)行擴(kuò)充類的構(gòu)造函數(shù),直至執(zhí)行完最終的擴(kuò)充類的構(gòu)造函數(shù)為止。(了解即可)【例3-7】演示繼承的基本用法。30313.3.3多態(tài)(new、virtual、override)

多態(tài)性的定義是:同一操作可分別作用于不同的類的實(shí)例,此時(shí)不同的類將進(jìn)行不同的解釋,最后產(chǎn)生不同的執(zhí)行結(jié)果。也就是說,具有不同功能的方法可以用一個(gè)方法名。

在面向?qū)ο蠓椒ㄖ羞@樣描述多態(tài)性:向不同的對(duì)象發(fā)送同一個(gè)消息,它們接收后會(huì)產(chǎn)生不同的行為(即方法)。消息是指對(duì)類的成員函數(shù)的調(diào)用;不同的行為是指不同的實(shí)現(xiàn),也就是調(diào)用了不同的函數(shù)。

請(qǐng)從P89頁開始逐行劃重點(diǎn)!

函數(shù)的重載、運(yùn)算符重載都是多態(tài)現(xiàn)象。

從系統(tǒng)實(shí)現(xiàn)的觀點(diǎn)看,多態(tài)性分為兩類:靜態(tài)多態(tài)和動(dòng)態(tài)多態(tài)性。以前學(xué)過的函數(shù)重載和運(yùn)算符重載屬于靜態(tài)多態(tài)性,在編譯程序時(shí)系統(tǒng)就可以確定調(diào)用哪個(gè)函數(shù),因此靜態(tài)多態(tài)性又稱編譯時(shí)的多態(tài)性。靜態(tài)多態(tài)性是通過函數(shù)重載實(shí)現(xiàn)的。

動(dòng)態(tài)多態(tài)性是在程序運(yùn)行中才能確定所針對(duì)的操作對(duì)象。它又稱運(yùn)行時(shí)的多態(tài)性。動(dòng)態(tài)多態(tài)性是通過虛函數(shù)實(shí)現(xiàn)的。3.3.3多態(tài)(new、virtual、override)

例如:設(shè)類B是類A的子類,即:類B繼承自類A。如果子類B和父類A中都定義有同名的方法,當(dāng)使用B類的對(duì)象調(diào)用該方法時(shí),定義這個(gè)對(duì)象的類,也就是父類A中的同名方法將被調(diào)用。

如果在父類A中的該方法前加上virtual關(guān)鍵字,并且在子類B中的同名方法前面加override關(guān)鍵字(即:在子類中重寫基類的方法),那么子類B中的同名方法將被調(diào)用!333.3.3多態(tài)(new、virtual、override)有以下幾種實(shí)現(xiàn)多態(tài)性的方式:i.通過繼承實(shí)現(xiàn)多態(tài)性:多個(gè)類可以繼承自同一個(gè)類,每個(gè)擴(kuò)充類中又可根據(jù)需要重寫基類成員以提供不同的功能。ii.通過抽象類實(shí)現(xiàn)多態(tài)性:抽象類本身不能被實(shí)例化,只能在擴(kuò)充類中通過繼承使用。抽象類的部分或全部成員不一定都要實(shí)現(xiàn),但是要在繼承類中全部實(shí)現(xiàn)。抽象類中已實(shí)現(xiàn)的成員仍可以被重寫,并且繼承類仍可以實(shí)現(xiàn)其他功能。iii.通過接口實(shí)現(xiàn)多態(tài)性:多個(gè)類可以實(shí)現(xiàn)相同的“接口”,并且一個(gè)類可以實(shí)現(xiàn)一個(gè)或多個(gè)接口。接口本質(zhì)上是類需要如何響應(yīng)的定義。接口僅聲明類需要實(shí)現(xiàn)的方法、屬性和事件,以及每個(gè)成員需要接收和返回的參數(shù)類型,而這些成員的特定實(shí)現(xiàn)則留給實(shí)現(xiàn)類去完成。34請(qǐng)看書P89頁下方的例子舉例:

定義一個(gè)抽象類:北京菜

類中的純虛函數(shù)包括:{

宮保雞丁做法

醬爆雞丁做法

魚香肉絲做法

糖醋里脊做法 }但是每道菜都沒有具體的實(shí)現(xiàn),而是要根據(jù)派生類的不同,定義具體的不同的詳細(xì)的炒菜(實(shí)現(xiàn))方法因?yàn)椴煌娜?,做同一道菜的炒法和“?shí)現(xiàn)”會(huì)有所不同。比如大廚(類)和普通人(類)的做法就不同;兒子(類)從爸爸(類)那里學(xué)來基本做法,更可能有自己的做法(重寫:override)3.3.3多態(tài)(new、virtual、override)1.虛擬(virtual)和重寫(override)使用虛擬方法與重寫方法時(shí),需要注意下面幾個(gè)方面。虛擬方法不能聲明為靜態(tài)(static)的。因?yàn)殪o態(tài)的方法是應(yīng)用在類這一層次的,而面向?qū)ο蟮亩鄳B(tài)性只能通過對(duì)象進(jìn)行操作,所以無法通過類名直接調(diào)用。virtual不能和private一起使用。聲明為private就無法在擴(kuò)充類中重寫了。重寫方法的名稱、參數(shù)個(gè)數(shù)、參數(shù)類型以及返回類型都必須和虛擬方法的一致。36請(qǐng)看書P90頁中間的例子373.3.3多態(tài)(new、virtual、override)2.隱藏(new)編寫方法時(shí),如果希望擴(kuò)充類重寫基類的方法,需要在擴(kuò)充類中用override聲明;如果希望隱藏基類的方法,在擴(kuò)充類中需要用new聲明,這就是C#語言進(jìn)行版本控制的依據(jù)。除了重寫基類的方法外,還可以在擴(kuò)充類中使用new修飾符來隱藏基類中同名的方法。與方法重寫不同的是,使用new關(guān)鍵字時(shí)并不要求基類中的方法聲明為virtual,只要在擴(kuò)充類的方法前聲明為new,就可以隱藏基類的方法。383.3.3多態(tài)(new、virtual、override)3.在擴(kuò)充類中直接調(diào)用基類的方法可以在擴(kuò)充類中通過base關(guān)鍵字直接調(diào)用基類的方法,例如:classMyBaseClass{publicvirtualintMyMethod(){return5;}}classMyDerivedClass:MyBaseClass{publicoverrideintMyMethod(){returnbase.MyMethod()*4;}}39403.4常用結(jié)構(gòu)和類的用法3.4.1Math類3.4.2DateTime結(jié)構(gòu)和TimeSpan結(jié)構(gòu)3.4.3秒表和計(jì)時(shí)器3.4.4隨機(jī)數(shù)413.4.1Math類Math類定義了各種常用的數(shù)學(xué)運(yùn)算,該類位于System命名空間下,其

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論