面向?qū)ο蠡靖拍罾斫鈅第1頁(yè)
面向?qū)ο蠡靖拍罾斫鈅第2頁(yè)
面向?qū)ο蠡靖拍罾斫鈅第3頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡(jiǎn)介

面向?qū)ο蠡靖拍罾斫饣靖拍钜弧?類(lèi)與實(shí)例1對(duì)象是一個(gè)自包含的實(shí)體,用一組可識(shí)別的特性和行為來(lái)標(biāo)識(shí)。2類(lèi)就是具有相同的屬性和功能的對(duì)象的抽象的集合a) Class是表示定義類(lèi)的關(guān)鍵字,b) 注意:類(lèi)名稱(chēng)首字母記著要大寫(xiě)。多個(gè)單詞則各個(gè)首字母大寫(xiě);第二對(duì)外公開(kāi)的方法需要用“public”修飾符3實(shí)例,就是一個(gè)真實(shí)的對(duì)象。實(shí)例化就是創(chuàng)建對(duì)象的過(guò)程,使用new關(guān)鍵字來(lái)創(chuàng)建。二、 構(gòu)造方法4構(gòu)造方法,又叫構(gòu)造函數(shù),其實(shí)就是對(duì)類(lèi)進(jìn)行初始化。構(gòu)造方法與類(lèi)同名,無(wú)返回值,也不需要void,在new時(shí)候調(diào)用。5所有的類(lèi)都有構(gòu)造方法,如果你不編碼則系統(tǒng)默認(rèn)生成空的構(gòu)造方法,若你有定義的構(gòu)造方法,那么默認(rèn)的構(gòu)造方法就會(huì)失效了。三、 方法重載6方法重載提供了創(chuàng)建同名的多個(gè)方法的能力,但這些方法需使用不同的參數(shù)類(lèi)型。7注意并不只是構(gòu)造方法可以重載,普通方法也是可以重載的8方法重載時(shí),兩個(gè)方法必須要方法名相同,但參數(shù)類(lèi)型或個(gè)數(shù)必須要有所不同,方法重載提供了函數(shù)可擴(kuò)展的能力。四、 屬性與修飾符9屬性是一個(gè)方法或一對(duì)方法,但在調(diào)用它的代碼開(kāi)來(lái),他是一個(gè)字段,即屬性適合于以字段的方式使用方法調(diào)用的場(chǎng)合。10字段是存儲(chǔ)類(lèi)要滿足其設(shè)計(jì)所需要的數(shù)據(jù),字段是與類(lèi)相關(guān)的變量11屬性有兩個(gè)方法get和set。五、 封裝12每個(gè)對(duì)象都包含它能進(jìn)行操作所需要的所有信息,這個(gè)特性稱(chēng)為封裝,因此對(duì)象不必依賴(lài)其他對(duì)象來(lái)完成自己的操作。13封裝的好處:3)良好的封裝能夠減少耦合b)類(lèi)內(nèi)部的實(shí)現(xiàn)可以自由地修改c)類(lèi)具有清晰的對(duì)外接口六、 繼承14對(duì)象的繼承代表了一種‘is-a’的關(guān)系,如果兩個(gè)對(duì)象A和B,可以描述為‘B是A’,則表明B可以繼承A。15繼承者還可以理解為是對(duì)被繼承者的特殊化,因?yàn)樗司邆浔焕^承者的特征外,還具備自己獨(dú)有的個(gè)性。16繼承定義了類(lèi)如何相互關(guān)聯(lián),共享特性。繼承的工作方式是,定義父類(lèi)和子類(lèi),或叫做基類(lèi)和派生類(lèi),其中子類(lèi)繼承父類(lèi)的所有特征。子類(lèi)不但繼承了父類(lèi)的所有特征,還可以定義新的特性。17記?。旱谝?,子類(lèi)擁有父類(lèi)非private的屬性和功能;第二,子類(lèi)具有自己的屬性和功能,即子類(lèi)可以擴(kuò)展父類(lèi)沒(méi)有的屬性和功能;第三,子類(lèi)還可以以自己的方式實(shí)現(xiàn)父類(lèi)的功能(方法重寫(xiě))。18子類(lèi)從他的父類(lèi)中繼承的成員有方法、域、屬性、事件、索引指示器,但對(duì)于構(gòu)造方法,他不能被繼承,只能被調(diào)用。對(duì)于調(diào)用父類(lèi)的成員,可以用base關(guān)鍵字。19不用繼承的話,如果要修改功能,就必須在所有重復(fù)的方法中修改,代碼越多,出錯(cuò)的可能就越大,而繼承的優(yōu)點(diǎn)是,繼承使得所有的子類(lèi)公共的部分都放在了父類(lèi),使得代碼得到了共享,這就避免了重復(fù),另外,繼承可使得修改或擴(kuò)展繼承而來(lái)的實(shí)現(xiàn)都較為容易20繼承是有缺點(diǎn)的,那就是父類(lèi)變,則子類(lèi)不得不變。繼承會(huì)破壞包裝,父類(lèi)實(shí)現(xiàn)細(xì)節(jié)暴漏給子類(lèi),這其實(shí)是增大類(lèi)兩個(gè)類(lèi)之間的耦合性。繼承顯然是一種類(lèi)與類(lèi)之間強(qiáng)耦合的關(guān)系21當(dāng)兩個(gè)類(lèi)之間具備‘is-a’的關(guān)系時(shí),就可以考慮用繼承。因?yàn)檫@表示一個(gè)類(lèi)是另一個(gè)類(lèi)的特殊種類(lèi),而當(dāng)兩個(gè)類(lèi)之間是‘has-a’的關(guān)系時(shí),表示某個(gè)角色具有某一項(xiàng)責(zé)任,此時(shí)不適合用繼承。七、 多態(tài)22多態(tài)表示不同的對(duì)象可以執(zhí)行相同的動(dòng)作,但要通過(guò)他們自己的實(shí)現(xiàn)代碼來(lái)執(zhí)行23注意:第一,子類(lèi)以父類(lèi)的身份出現(xiàn);第二,子類(lèi)在工作時(shí)以自己的方式來(lái)實(shí)現(xiàn);第三,子類(lèi)以父類(lèi)的身份出現(xiàn)時(shí),子類(lèi)特有的屬性和方法不可以使用.24為了使子類(lèi)的實(shí)例完全接替來(lái)自父類(lèi)的成員,父類(lèi)必須將該成員聲明為虛擬的,通過(guò)加virtual關(guān)鍵字來(lái)實(shí)現(xiàn)的。子類(lèi)可以選擇使用override關(guān)鍵字,將父類(lèi)實(shí)現(xiàn)替換為他自己的實(shí)現(xiàn),這就是方法重寫(xiě)override,或者叫做覆寫(xiě)。25不同的對(duì)象可以執(zhí)行相同的動(dòng)作,但要通過(guò)他們自己的實(shí)現(xiàn)代碼來(lái)執(zhí)行。26多臺(tái)的原理是當(dāng)方法被調(diào)用時(shí),無(wú)論對(duì)象是否被轉(zhuǎn)換為其父類(lèi),都只有位于對(duì)象繼承鏈最末端的方法實(shí)現(xiàn)會(huì)被調(diào)用。也就是說(shuō),虛方法是按照其運(yùn)行時(shí)類(lèi)型而非編譯時(shí)類(lèi)型進(jìn)行動(dòng)態(tài)綁定調(diào)用的。例如:動(dòng)物animal=new貓();八、 重構(gòu)27也就是使用virtual和override關(guān)鍵字九、 抽象類(lèi)28C#允許把類(lèi)和方法聲明為abstract,即抽象類(lèi)和抽象方法。29注意:第一,抽象類(lèi)不能被實(shí)力化。第二,抽象方法是必須被子類(lèi)重寫(xiě)的方法;第三:如果類(lèi)中包含抽象方法,那么類(lèi)就必須定義為抽象類(lèi),不論是否包含其他的一般方法。30考慮讓抽象類(lèi)擁有盡可能多的共同代碼,擁有盡可能少的數(shù)據(jù)。31使用:抽象類(lèi)通常代表一個(gè)抽象概念,它提供一個(gè)繼承的出發(fā)點(diǎn),當(dāng)設(shè)計(jì)一個(gè)新的抽象類(lèi)時(shí),一定是用來(lái)繼承的,所以,在一個(gè)以繼承關(guān)系形成的等級(jí)結(jié)構(gòu)里面,樹(shù)葉節(jié)點(diǎn)應(yīng)當(dāng)是具體類(lèi),而樹(shù)枝節(jié)點(diǎn)均應(yīng)當(dāng)是抽象類(lèi)。十、接口32Interface,接口是把隱式公共方法和屬性組合起來(lái),以封裝特定功能的集合。一旦類(lèi)實(shí)現(xiàn)了接口,類(lèi)就可以支持接口所指定的所有屬性和成員。聲明接口在語(yǔ)法上與聲明抽象類(lèi)完全相同,但不允許提供接口中任何成員的執(zhí)行方式。33實(shí)現(xiàn)接口的類(lèi)就必須要實(shí)現(xiàn)接口中的所有方法和屬性。34一個(gè)類(lèi)可以支持多個(gè)接口,多個(gè)類(lèi)也可以支持相同的接口。35接口的命名:前面要加一個(gè)大寫(xiě)的字母“I”。36注意:接口用interface聲明,而不是class,接口名稱(chēng)要加“I”,接口中的方法或?qū)傩郧懊娌荒苡行揎椃椒](méi)有方法體。十一、抽象類(lèi)與接口的區(qū)別37從表象上來(lái)說(shuō),抽象類(lèi)可以給出一些成員的實(shí)現(xiàn),接口卻不包含成員的實(shí)現(xiàn),抽象類(lèi)的抽象成員可以被子類(lèi)部分實(shí)現(xiàn),接口成員需要實(shí)現(xiàn)類(lèi)完全實(shí)現(xiàn),一個(gè)類(lèi)只能繼承一個(gè)抽象類(lèi),但是可以實(shí)現(xiàn)對(duì)個(gè)接口。38其他的:第一,類(lèi)是對(duì)對(duì)象的餓抽象,抽象類(lèi)是對(duì)類(lèi)的抽象,接口是對(duì)行為的抽象。第二,如果行為跨越不同類(lèi)的對(duì)象,可以使用接口,對(duì)于一些相似的類(lèi)對(duì)象,用繼承抽象類(lèi);第三,從設(shè)計(jì)角度,抽象類(lèi)是從子類(lèi)中發(fā)現(xiàn)了公共的東西,泛化出父類(lèi),然后子類(lèi)繼承自父類(lèi),而接口是根本不知道子類(lèi)的存在,方法如何實(shí)現(xiàn)還不確認(rèn),預(yù)先定義。十二、集合39數(shù)組優(yōu)點(diǎn),比如說(shuō)數(shù)組在內(nèi)存中連續(xù)存儲(chǔ),因此可以快速而容易地從頭到尾遍歷元素,可以快速修改元素等等。缺點(diǎn),應(yīng)該是創(chuàng)建時(shí)必須要指定數(shù)組變量的大小,還有在兩個(gè)元素之間添加元素也比較困難。.netframework提供了用于數(shù)據(jù)存儲(chǔ)和檢索的專(zhuān)用類(lèi),這些類(lèi)統(tǒng)稱(chēng)為集合。這些類(lèi)提供對(duì)堆棧、隊(duì)列、列表和哈希表的支持。大多數(shù)集合類(lèi)實(shí)現(xiàn)相同的接口。ArrayList:ArrayList是命名空間System.Colloection下的一部分,他是使用大小按需動(dòng)態(tài)增加的數(shù)組實(shí)現(xiàn)IList接口。ArrayList的容量是ArrayList可以保存的元素?cái)?shù)。ArrayList的默認(rèn)初始容量為0.隨著元素添加到Arraylist中,容量會(huì)根據(jù)需要通過(guò)重新分配自動(dòng)增加。使用整數(shù)索引可以訪問(wèn)此集合中的元素。此集合中的所以是從0開(kāi)始。優(yōu)點(diǎn):可以根據(jù)使用大小按需動(dòng)態(tài)增加,不用受事先設(shè)置其大小的控制。還有就是可以隨意地添加、插入或移除某一范圍元素。缺點(diǎn):Arraylist不是類(lèi)型安全的。存儲(chǔ)時(shí),都看成Object類(lèi)型。還會(huì)發(fā)生,裝箱,拆箱操作。a) 裝箱:就是把值類(lèi)型打包到Object引用類(lèi)型的一個(gè)實(shí)例中。b) 拆箱就是指從對(duì)象中提取值類(lèi)型。c) 相對(duì)于簡(jiǎn)單的賦值而言,裝箱和拆箱過(guò)程需要進(jìn)行大量的計(jì)算。對(duì)值類(lèi)型進(jìn)行裝箱時(shí),必須分配并構(gòu)造一個(gè)全新的對(duì)象。其次,拆箱所需的強(qiáng)制裝換也需要進(jìn)行大量的計(jì)算。十三、泛型42泛型是具有占位符(典型參數(shù))的類(lèi)、結(jié)構(gòu)、接口和方法,這些站位符是類(lèi),結(jié)構(gòu)和方法所存儲(chǔ)或使用的一個(gè)或多個(gè)類(lèi)型的占位符。泛型集合可以將類(lèi)型參數(shù)用作他所存儲(chǔ)的對(duì)象的占位符;類(lèi)型參數(shù)作為其字段的類(lèi)型和其方法的參數(shù)類(lèi)型出現(xiàn)。43通常情況下,都建議使用泛型集合,因?yàn)檫@樣可以獲得類(lèi)型安全的直接優(yōu)點(diǎn)而不需要從基集合類(lèi)型派生并實(shí)現(xiàn)類(lèi)型特定的成員。此外,如果集合元素為值類(lèi)型,泛型集合類(lèi)型的性能通常優(yōu)于對(duì)應(yīng)的非泛型集合類(lèi)型(并優(yōu)于從非泛型基集合類(lèi)型派生的類(lèi)型),因?yàn)槭褂脮r(shí)不必對(duì)元素進(jìn)行裝箱十四、委托與事件44委托是對(duì)函數(shù)的封裝,可以當(dāng)做給方法的特征指定一個(gè)名稱(chēng)。而事件則是委托的一種特殊形式,當(dāng)發(fā)生有意義的事情時(shí),事件對(duì)象處理通知過(guò)程。45委托是一種引用方法的類(lèi)型。一旦為委托分配了方法,委托將與該方法具有完全相同的行為。委托對(duì)象用關(guān)鍵字delegate來(lái)聲明。而事件是說(shuō)在發(fā)生其他類(lèi)或?qū)ο箨P(guān)注的事情時(shí),類(lèi)或?qū)ο罂赏ㄟ^(guò)事件通知他們。事件用event關(guān)鍵字聲明46例子:貓來(lái)了(CatCome),老鼠要跑(MouseRun),這里可以寫(xiě)一個(gè)委托PublicdelegatevoidCatShoutEventHandler();//聲明委托PubliceventCatShoutEventHandlerCatShout;//聲明事件CatShout,它的事件類(lèi)型時(shí)委托CatShoutEventHandlercat.CatShou

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論