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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

溫馨提示

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

評論

0/150

提交評論