類的繼承與多態(tài)性實(shí)驗(yàn)報(bào)告_第1頁(yè)
類的繼承與多態(tài)性實(shí)驗(yàn)報(bào)告_第2頁(yè)
類的繼承與多態(tài)性實(shí)驗(yàn)報(bào)告_第3頁(yè)
類的繼承與多態(tài)性實(shí)驗(yàn)報(bào)告_第4頁(yè)
類的繼承與多態(tài)性實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、4.5.多態(tài)的好處4.5.多態(tài)的好處類的繼承與多態(tài)性實(shí)驗(yàn)報(bào)告介紹什么是多態(tài)多態(tài)在中的技術(shù)基礎(chǔ)示例6.多態(tài)對(duì)應(yīng)的英文單詞是,百度翻譯給出的翻譯是:6.多態(tài)對(duì)應(yīng)的英文單詞是,百度翻譯給出的翻譯是:總結(jié)介紹之前的文章介紹過(guò)類的封裝性和繼承性,現(xiàn)在是時(shí)候聊聊面向?qū)ο缶幊痰娜筇匦灾坏淖詈笠粋€(gè)類的多態(tài)性了。多態(tài)的基礎(chǔ)是繼承(包括了接口的實(shí)現(xiàn))和方法的覆蓋。什么是多態(tài)多型現(xiàn)象,多態(tài)性多機(jī)組合形式按字面意思就是多種狀態(tài)、形態(tài)、姿態(tài)等等,潛臺(tái)詞就是某個(gè)東西具有多種狀態(tài)、形態(tài)、姿態(tài)等等。那是什么東西呢?在面向?qū)ο蟮木幊陶Z(yǔ)言里面(當(dāng)然就包括了)就是某個(gè)方法或函數(shù)。那方法的多種狀態(tài)、形態(tài)、姿態(tài)有是個(gè)什么意思呢?這

2、其實(shí)是指同一個(gè)方法具有多個(gè)方法體,就是方法的實(shí)現(xiàn)。而方法的相同與否是由方法簽名決定的。所以,多態(tài)其實(shí)本質(zhì)上是指同一個(gè)類的同一個(gè)方法卻具有不同的行為特征。狀態(tài)、形態(tài)、姿態(tài)指的就是行為特征。多態(tài)在中的技術(shù)基礎(chǔ)多態(tài)在中的技術(shù)基礎(chǔ)然而,在中,同一個(gè)類里面是不可能存在兩個(gè)簽名相同而實(shí)現(xiàn)不同的方法的,否則的話會(huì)導(dǎo)致無(wú)法判斷該執(zhí)行哪個(gè)方法,因此在編譯時(shí)就會(huì)報(bào)錯(cuò)。所以,肯定是在兩個(gè)類中才有可能存在兩個(gè)簽名相同而實(shí)現(xiàn)不同的方法,一個(gè)實(shí)現(xiàn)在這個(gè)類,另一個(gè)實(shí)現(xiàn)在另一個(gè)類。而如果這兩個(gè)類毫無(wú)瓜葛,那么肯定就與多態(tài)的本質(zhì)(同一個(gè)類的同一個(gè)方法卻具有不同的行為特征)自相矛盾了。所以,這兩個(gè)類肯定是有某種聯(lián)系的。我們?cè)傧胂?/p>

3、,什么概念是能夠讓兩個(gè)不同的類卻又能稱為同一個(gè)類的?答案就是類的繼承擴(kuò)展,就是現(xiàn)實(shí)中的某東西是某類東西”的概念,就是“具體和抽象”的思想。比如,男人是人,女人也是人,男人類和女人類就借助于人類建立了某種聯(lián)系,而人類具有的某個(gè)行為在男人類和女人類中是有著不同體現(xiàn)的,比如人類的吃飯這個(gè)行為,男人類的體現(xiàn)是狼吞虎咽,女人類的體現(xiàn)是細(xì)嚼慢咽。例子不是很恰當(dāng),但意思就是這么個(gè)意思。所以說(shuō),里面多態(tài)的技術(shù)基礎(chǔ)就是方法的覆蓋,當(dāng)然,在中覆蓋不僅僅發(fā)生在類的繼承擴(kuò)展上,還可能發(fā)生在接口的實(shí)現(xiàn)上。只有覆蓋才能滿足兩個(gè)方法簽名相同而實(shí)現(xiàn)不同,卻又能統(tǒng)一在同一個(gè)類(超類或接口)的同一個(gè)方法之中。示例人類:packa

4、gecom.example;publicclassPersonpublicvoideat()System.out.println(iui.);男人類:packagecom.example;publicclassManextendsPersonpublicvoideat()super.eat();/人類都要吃飯System.out.println(我狼吞虎咽地吃!“);女人類:packagecom.example;publicclassWomanextendsPersonpublicvoideat()super.eat();/人類都要吃飯System.out.println(我細(xì)嚼慢咽地吃!“)

5、;使用人類的外部模塊:packagecom.example;/*外部模塊,使用Person類可以用Man類和Woman類的對(duì)象來(lái)配置此模塊*/publicclassOuterModulepublicstaticvoidmain(Stringargs)Personp=newMan();/相當(dāng)于配置p.eat();p=newWoman();/相當(dāng)于配置p.eat();執(zhí)行結(jié)果可以看出,對(duì)同一個(gè)類()的同一個(gè)方法()的調(diào)用,執(zhí)行結(jié)果卻不一樣,這就是多態(tài)!其根本原因還是在于調(diào)用該方法引用類型變量指向的是一個(gè)子類或接口實(shí)現(xiàn)類的對(duì)象所以,我們只要為這個(gè)變量配置不同的子類或接口實(shí)現(xiàn)類的對(duì)象即可獲得不同的執(zhí)行

6、結(jié)果。這好像有點(diǎn)類似于語(yǔ)言的函數(shù)指針,本質(zhì)上不過(guò)是把一段代碼包裝成數(shù)據(jù),然后就可以將它賦值某種特殊類型的變量(實(shí)際上代表的是數(shù)據(jù)存放的地址而已),比如函數(shù)指針或引用類型變量,然后就可以用該變量來(lái)找到該段代碼,從而執(zhí)行該段代碼。多態(tài)的好處其實(shí),這個(gè)需要不斷的實(shí)踐、思考和總結(jié),自己對(duì)多態(tài)好處的體會(huì)才會(huì)深刻。多態(tài)的好處最根本上還是圍繞代碼可復(fù)用性和可擴(kuò)展性這兩點(diǎn)上面似乎封裝和繼承也是為了這兩個(gè)目標(biāo),不過(guò)側(cè)重點(diǎn)不太一樣罷了。首先,從使用多態(tài)類接口的外部模塊的角度看,它看到的是一個(gè)通用的封裝好的可以復(fù)用的行為規(guī)范(比如示例中的行為,中的等行為),而不必為了每一個(gè)子類或?qū)崿F(xiàn)類的具體行為特征去開(kāi)發(fā)一套相同的

7、代碼。說(shuō)白了還是從各種具體行為特征中抽象出共同的行為規(guī)范,還是發(fā)現(xiàn)重復(fù)、消除重復(fù)的體現(xiàn)。然后,從多態(tài)類接口的角度看,我可以自由的實(shí)現(xiàn)擁有各種不同具體行為的子類實(shí)現(xiàn)類,有的可能性能更好,有的可能業(yè)務(wù)功能不一樣(就比如你可以實(shí)現(xiàn)各種功能的一樣),最后只要把它們配置到外部模塊(比如中)就可以使用了,這個(gè)過(guò)程中完全不用修改其他子類實(shí)現(xiàn)類以及外部模塊的代碼。這就是高可擴(kuò)展性,就是松耦合??梢詤⒖记懊娴奈恼驴纯醇夹g(shù)中是如何使用多態(tài)的。所謂面向接口編程,也就是為了充分使用多態(tài)。在方法的參數(shù)和返回值的類型選擇上,盡量選擇抽象級(jí)別更高的接口上,當(dāng)然,抽象類或普通的父類也可以。而其他的什么七大面向?qū)ο笤O(shè)計(jì)原則都多少與多態(tài)有關(guān)系,當(dāng)然也與封裝、繼承有關(guān)系,畢竟這三個(gè)是面向?qū)ο笏枷氲幕咎卣???偨Y(jié)到目前為止,面向?qū)ο蟮娜筇匦远家呀?jīng)介紹過(guò)了,其實(shí)它們都是為了代碼更好的復(fù)用和擴(kuò)展。多態(tài)本質(zhì)上是指同一個(gè)類的同一個(gè)方法卻具有不同的行為特征;多態(tài)在中主要通過(guò)方法覆蓋技術(shù)來(lái)實(shí)現(xiàn);方法覆蓋可

溫馨提示

  • 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)論