




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
常用類思政目標(biāo):
?理解課程中對(duì)常用類的講解,樹(shù)立理論聯(lián)系實(shí)際的意識(shí)
?通過(guò)面向?qū)ο蟪绦蛟O(shè)計(jì)方法的學(xué)習(xí),提高學(xué)生的抽象思維能力技能要求:
?掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念
?了解常用類概念及用法
?理解并掌握抽象類的用法
?掌握接口與抽象類的關(guān)系
?了解匿名類實(shí)踐目標(biāo):
?根據(jù)示例,對(duì)所學(xué)的概念進(jìn)行驗(yàn)證
?熟練應(yīng)用面向?qū)ο蠓椒▽?shí)現(xiàn)編程設(shè)計(jì)第9章抽象類接口匿名類結(jié)構(gòu)Object類抽象類01PART抽象類的概念抽象類是只表達(dá)一個(gè)抽象的概念,是作為其派生類的一個(gè)基類的類。抽象類使用abstract修飾,抽象類不能被實(shí)例化,即抽象類沒(méi)有實(shí)例存在。抽象方法抽象方法是只有方法聲明但沒(méi)有方法實(shí)現(xiàn)的一個(gè)空方法,使用abstract修飾。抽象的方法隱式為虛方法,必須被覆蓋,即若某個(gè)類繼承了一個(gè)抽象類,則該類一定要實(shí)現(xiàn)基類中的所有抽象方法。另外,抽象方法必須聲明在抽象類中。實(shí)例設(shè)計(jì)3個(gè)類:star(明星)類、singer(歌星)類、filmStar(影星)類。其中,star類可以設(shè)計(jì)為singer類和filmStar類的基類。給這些類都設(shè)計(jì)一個(gè)用于介紹自己的方法Introduce(),由于star類的Introduce()方法在singer類和filmStar類并不是很適用,此時(shí),可以在基類star中將該方法聲明為抽象方法,star類自然也要聲明為抽象類,然后在singer類和filmStar類中對(duì)Introduce()方法進(jìn)行完善(重寫(xiě))。抽象類從執(zhí)行結(jié)果可以知道,子類實(shí)現(xiàn)了基類中的抽象方法,能夠順利輸出(1)不確定某個(gè)類的方法,但知道其實(shí)現(xiàn)的細(xì)節(jié)是由子類決定,那么就可以把它定義為abstract。(2)抽象方法必須聲明在抽象類中,但抽象類不一定包含抽象方法。(3)聲明抽象方法時(shí),不能使用virtual、static、private修飾符(4)抽象類不僅可以包含抽象方法,還可以包含虛方法。(5)抽象類中還可以有抽象屬性,實(shí)例如下1423結(jié)果注意事項(xiàng)抽象類接口02PART接口的概念接口,可理解為抽象類的一種特例。在接口中,所有的方法都必須是抽象的,而且接口沒(méi)有實(shí)現(xiàn)代碼,只有聲明語(yǔ)句。接口的作用通過(guò)接口,可以定義類的原形,不用定義類的實(shí)現(xiàn)。抽象類中要求其子類必須實(shí)現(xiàn)其抽象方法,接口則要求實(shí)現(xiàn)該接口的類,必須實(shí)現(xiàn)接口內(nèi)聲明的所有成員(也可以理解為實(shí)現(xiàn)該接口的類都必須具有相同的形式),因此,接口被看作是類和類之間的協(xié)議。在C#中,雖然一個(gè)類只能繼承一個(gè)父類,但可以實(shí)現(xiàn)多個(gè)接口,借助這個(gè)特性,可以間接實(shí)現(xiàn)多重繼承。接口接口聲明接口成員時(shí),接口成員不允許有任何修飾符,如public、private等。接口的聲明語(yǔ)法聲明接口一個(gè)類實(shí)現(xiàn)接口的形式聲明一個(gè)接口,接口包含一個(gè)屬性和一個(gè)方法,其中方法有兩個(gè)重載版本重載定義一個(gè)singer類實(shí)現(xiàn)該接口接口定義一個(gè)singer類實(shí)現(xiàn)該接口接口解析由于已經(jīng)在接口中定義了屬性和方法,故在此一定要實(shí)現(xiàn),當(dāng)然也可繼續(xù)在該類中添加需要的成員。匿名類03PART引用由于匿名類型沒(méi)有名字,所以若想引用它,就需要借助隱式類型變量此處所得到得匿名類型有兩個(gè)屬性,分別為Max和Min,值分別為100和0??梢允褂胢yOb.Max,myOb.Min來(lái)訪問(wèn)這兩個(gè)屬性引用如下在使用匿名類型的過(guò)程中,需要注意以下六個(gè)問(wèn)題:(1)程序編寫(xiě)人員不能決定匿名類型的名稱。(2)匿名類型是隱式封閉的。(3)匿名類型的字段和屬性總是只讀的。(4)匿名類型繼承自System.Object。(5)匿名類型的實(shí)體創(chuàng)建只能使用默認(rèn)的構(gòu)造函數(shù),不能自定義。(6)匿名類型中不支持事件、自定義方法、自定義操作符以及自定義重寫(xiě)。匿名類的概念沒(méi)有名字的類就是匿名類型創(chuàng)建匿名類解讀其中,name1、name2最終成為該匿名類型的屬性,value1、value2成為相應(yīng)的屬性值。表面上,匿名類型沒(méi)有名稱,實(shí)則編譯器會(huì)在內(nèi)部給它分配一個(gè)名稱,故匿名類型仍遵從C#的強(qiáng)類型檢查規(guī)則。匿名類結(jié)構(gòu)04PART02結(jié)構(gòu)與類的不同之處結(jié)構(gòu)屬于值類型,聲明它使用的是關(guān)鍵字struct;而類屬于引用類型,聲明它使用的是關(guān)鍵字class注意問(wèn)題(1)結(jié)構(gòu)不能聲明無(wú)參數(shù)構(gòu)造函數(shù),只能自行定義有參構(gòu)造函數(shù)。(2)與類一樣,結(jié)構(gòu)的成員有字段、屬性、方法、構(gòu)造函數(shù)、事件等,但結(jié)構(gòu)不能定義析構(gòu)函數(shù)。(3)結(jié)構(gòu)不能繼承其他類或者結(jié)構(gòu),即結(jié)構(gòu)不能作為類的的基礎(chǔ)類型,但是結(jié)構(gòu)可以實(shí)現(xiàn)接口。所有結(jié)構(gòu)的直接父類就是System.ValueType。(4)結(jié)構(gòu)創(chuàng)建對(duì)象可以像類實(shí)例化一樣使用new,當(dāng)然也可以不使用new。使用new時(shí),會(huì)調(diào)用指定的構(gòu)造函數(shù)完成一些初始化工作;不使用new時(shí),不會(huì)調(diào)用構(gòu)造函數(shù),此時(shí),需要自己手工完成初始化工作。03聲明結(jié)構(gòu)結(jié)構(gòu)概念結(jié)構(gòu)類型是一種可封裝數(shù)據(jù)和相關(guān)功能的值類型
,它與類具有很多相同或者類似特征。01結(jié)構(gòu)實(shí)例結(jié)構(gòu)代碼定義的結(jié)構(gòu)具有兩個(gè)字段、一個(gè)方法和一個(gè)構(gòu)造函數(shù)。調(diào)用代碼過(guò)程中,通過(guò)三種方式獲得結(jié)構(gòu)對(duì)象,即無(wú)參構(gòu)造函數(shù)、有參構(gòu)造函數(shù)和不使用new實(shí)例化,然后調(diào)用其Introduce()方法完成結(jié)果輸出。Object類05PART概念Object所有成員方法Object類是.NET中所有類的最終基類,也是類型層次結(jié)構(gòu)的根,即所有的引用類型和值類型都直接或間接地繼承自O(shè)bject。這就決定了Object類型可以引用任何類型的對(duì)象和任何類型的數(shù)組。(1)Equals(ob):確定指定的Object是否相等于當(dāng)前的Object,要想實(shí)現(xiàn)判斷對(duì)象內(nèi)容是否相等,需要自己重寫(xiě)該方法。Equals(ob1,ob2):確定ob1,ob2是否相同。(2)ReferenceEquals(ob1,ob2):確定ob1,ob2是否引用相同的對(duì)象。(3)MemberwiseClone():淺度復(fù)制。(4)GetType():在運(yùn)行時(shí)獲得對(duì)象的類型。(5)ToString():默認(rèn)返回類型的完整名稱。(6)GetHashCode():返回與調(diào)用對(duì)象相關(guān)的散列代碼。Object類0201判斷兩個(gè)數(shù)值是否相等,屬于相等問(wèn)題相等問(wèn)題(1)==作用于類時(shí)的情形,如圖所示。1.==應(yīng)用于類和簡(jiǎn)單值類型Object類由上例可以看出,在引用類型中,==是用于引用比較,即檢測(cè)引用是否相等。(2)==作用于簡(jiǎn)單值類型(如枚舉類型和整型)時(shí)的情形Object類由此例可得,在值類型中,==是用于內(nèi)容比較,即檢測(cè)兩個(gè)對(duì)象的內(nèi)容是否一樣。應(yīng)注意的是,==和!=不能用于struct。0102032.相等性判斷方法(1)ReferenceEquals():該方法用于引用類型比較,比較兩個(gè)引用所指向的位置是否相同;用于值類型對(duì)象的比較,永遠(yuǎn)返回false。(2)靜態(tài)Equals():該方法涵蓋兩步比較檢測(cè)。先按照引用的方式比較,再調(diào)用對(duì)象的實(shí)例方法Equals()比較,如“object.Equals();”。(3)實(shí)例方法Equals():為虛方法,默認(rèn)進(jìn)行引用比較。當(dāng)引用比較不合乎自己的要求時(shí),則重新改造方法實(shí)現(xiàn)自定義的恒等比較(==)。04由于System.ValueType是值類型的基類,故它重寫(xiě)了Equals()方法,實(shí)現(xiàn)了內(nèi)容比較。也可以理解為,在值類型中,實(shí)例方法Equals()比較的是對(duì)象內(nèi)容是否相等,在引用類型中,實(shí)例方法比較的是引用是否相等。Object類Object類使用ReferenceEquals()用于引用類型和值類型比較從該例可見(jiàn),ReferenceEquals()方法在用于引用類型比較時(shí),引用位置相同(即同一個(gè)對(duì)象)才返回true;在用于兩個(gè)值類型比較時(shí),永遠(yuǎn)返回false。Object類Equals(),代碼從該例運(yùn)行結(jié)果可見(jiàn),Equals()方法在用于引用類型時(shí),比較的是引用是否相同;在用于值類型時(shí),則比較的是內(nèi)容是否相同。GetType()方法用于獲取當(dāng)前實(shí)例的類型,返回值為T(mén)ype;該方法返回的是對(duì)象的真實(shí)類型,而非聲明類型;該方法不含任何參數(shù),是非靜態(tài)方法。與此相關(guān)的方法還有GetTypeCode()方法,GetTypeCode()并非來(lái)自object,所以有些類并不具備該方法,如自定義的類和結(jié)構(gòu)。GetType()方法與ToString()方法Object類typeof用于獲取類型的
System.Type
對(duì)象,例如Array.CreateInstance()方法就會(huì)采用typeof來(lái)指定要?jiǎng)?chuàng)建一個(gè)什么類型的數(shù)組對(duì)象;sizeof則用于獲取值類型的字節(jié)大?。ú⒎撬械闹殿愋投寄苁褂茫?,它不能用于引用類型。typeof和sizeofToString()方法ToString()方法是一種虛方法,作用是將其它類型以字符串類型表示。ToString方法可以重寫(xiě),下面通過(guò)示例來(lái)講解重寫(xiě)ToString的方法Object類ToString()方法在某些場(chǎng)合下還具有其他一些功
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 墩、臺(tái)身和蓋梁工程現(xiàn)場(chǎng)質(zhì)量檢驗(yàn)報(bào)告單(五)
- 智能交通管理平臺(tái)開(kāi)發(fā)協(xié)議
- 辦公用品采購(gòu)預(yù)算與實(shí)際使用對(duì)比表格
- 專業(yè)資料出版合作協(xié)議
- 水利水電工程施工承包協(xié)議
- 企業(yè)品牌授權(quán)使用協(xié)議書(shū)
- 小學(xué)生體育運(yùn)動(dòng)啟蒙故事讀后感
- 太陽(yáng)能光伏系統(tǒng)安裝維護(hù)合同
- 2024-2025學(xué)年高二數(shù)學(xué)湘教版選擇性必修第二冊(cè)教學(xué)課件 第2章-2.4空間向量在立體幾何中的應(yīng)用-2.4.3 向量與夾角
- 水系統(tǒng)基礎(chǔ)知識(shí)培訓(xùn)課件
- 公司積分制管理實(shí)施方案
- 2024年湖南科技職業(yè)學(xué)院高職單招語(yǔ)文歷年參考題庫(kù)含答案解析
- 《性病防治知識(shí)講座》課件
- 定額〔2025〕2號(hào)文-關(guān)于發(fā)布2020版電網(wǎng)技術(shù)改造及檢修工程概預(yù)算定額2024年下半年價(jià)格
- 2024年河南省中職對(duì)口升學(xué)高考語(yǔ)文試題真題(原卷版)
- 《無(wú)線局域網(wǎng)組建》課件-0無(wú)線課程概述
- 拉薩市2025屆高三第一次聯(lián)考(一模)語(yǔ)文試卷(含答案解析)
- 2024解析:第八章牛頓第一定律、二力平衡-講核心(解析版)
- 《勞動(dòng)法與勞動(dòng)關(guān)系》課件
- 2025陜西延長(zhǎng)石油(集團(tuán))有限責(zé)任公司招聘(1881人)筆試備考題庫(kù)及答案解析
- 無(wú)人機(jī)航拍技術(shù)教案(完整版)
評(píng)論
0/150
提交評(píng)論