欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Java多態(tài)性怎么理解

本篇內(nèi)容主要講解“Java多態(tài)性怎么理解”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Java多態(tài)性怎么理解”吧!

創(chuàng)新互聯(lián)是一家專(zhuān)注于網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作與策劃設(shè)計(jì),成都網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專(zhuān)注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專(zhuān)業(yè)建站公司;建站業(yè)務(wù)涵蓋:成都等地區(qū)。成都做網(wǎng)站價(jià)格咨詢(xún):028-86922220

面向?qū)ο缶幊逃腥齻€(gè)特征,即封裝、繼承和多態(tài)。

封裝隱藏了類(lèi)的內(nèi)部實(shí)現(xiàn)機(jī)制,從而可以在不影響使用者的前提下改變類(lèi)的內(nèi)部結(jié)構(gòu),同時(shí)保護(hù)了數(shù)據(jù)。

繼承是為了重用父類(lèi)代碼,同時(shí)為實(shí)現(xiàn)多態(tài)性作準(zhǔn)備。那么什么是多態(tài)呢?

方法的重寫(xiě)、重載與動(dòng)態(tài)連接構(gòu)成多態(tài)性。Java之所以引入多態(tài)的概念,原因之一是它在類(lèi)的繼承問(wèn)題上和C++不同,后者允許多繼承,這確實(shí)給其帶來(lái)的非常強(qiáng)大的功能,但是復(fù)雜的繼承關(guān)系也給C++開(kāi)發(fā)者帶來(lái)了更大的麻煩,為了規(guī)避風(fēng)險(xiǎn),Java只允許單繼承,派生類(lèi)與基類(lèi)間有IS-A的關(guān)系(即“貓”is a “動(dòng)物”)。

這樣做雖然保證了繼承關(guān)系的簡(jiǎn)單明了,但是勢(shì)必在功能上有很大的限制,所以,Java引入了多態(tài)性的概念以彌補(bǔ)這點(diǎn)的不足,此外,抽象類(lèi)和接口也是解決單繼承規(guī)定限制的重要手段。同時(shí),多態(tài)也是面向?qū)ο缶幊痰木杷凇?/p>

要理解多態(tài)性,首先要知道什么是“向上轉(zhuǎn)型”。

我定義了一個(gè)子類(lèi)Cat,它繼承了Animal類(lèi),那么后者就是前者是父類(lèi)。我可以通過(guò)

Cat c = new Cat();

實(shí)例化一個(gè)Cat的對(duì)象,這個(gè)不難理解。但當(dāng)我這樣定義時(shí):

Animal a = new Cat();

這代表什么意思呢?

很簡(jiǎn)單,它表示我定義了一個(gè)Animal類(lèi)型的引用,指向新建的Cat類(lèi)型的對(duì)象。由于Cat是繼承自它的父類(lèi)Animal,所以Animal類(lèi)型的引用是可以指向Cat類(lèi)型的對(duì)象的。那么這樣做有什么意義呢?因?yàn)樽宇?lèi)是對(duì)父類(lèi)的一個(gè)改進(jìn)和擴(kuò)充,所以一般子類(lèi)在功能上較父類(lèi)更強(qiáng)大,屬性較父類(lèi)更獨(dú)特,

定義一個(gè)父類(lèi)類(lèi)型的引用指向一個(gè)子類(lèi)的對(duì)象既可以使用子類(lèi)強(qiáng)大的功能,又可以抽取父類(lèi)的共性。所以,父類(lèi)類(lèi)型的引用可以調(diào)用父類(lèi)中定義的所有屬性和方法,而對(duì)于子類(lèi)中定義而父類(lèi)中沒(méi)有的方法,它是無(wú)可奈何的;同時(shí),父類(lèi)中的一個(gè)方法只有在在父類(lèi)中定義而在子類(lèi)中沒(méi)有重寫(xiě)的情況下,才可以被父類(lèi)類(lèi)型的引用調(diào)用;對(duì)于父類(lèi)中定義的方法,如果子類(lèi)中重寫(xiě)了該方法,那么父類(lèi)類(lèi)型的引用將會(huì)調(diào)用子類(lèi)中的這個(gè)方法,這就是動(dòng)態(tài)連接。

看下面這段程序:

class Father{  public void func1(){  func2();  }  //這是父類(lèi)中的func2()方法,因?yàn)橄旅娴淖宇?lèi)中重寫(xiě)了該方法  //所以在父類(lèi)類(lèi)型的引用中調(diào)用時(shí),這個(gè)方法將不再有效  //取而代之的是將調(diào)用子類(lèi)中重寫(xiě)的func2()方法  public void func2(){  System.out.println("AAA");  }  }  class Child extends Father{  //func1(int i)是對(duì)func1()方法的一個(gè)重載  //由于在父類(lèi)中沒(méi)有定義這個(gè)方法,所以它不能被父類(lèi)類(lèi)型的引用調(diào)用  //所以在下面的main方法中child.func1(68)是不對(duì)的  public void func1(int i){  System.out.println("BBB");  }  //func2()重寫(xiě)了父類(lèi)Father中的func2()方法  //如果父類(lèi)類(lèi)型的引用中調(diào)用了func2()方法,那么必然是子類(lèi)中重寫(xiě)的這個(gè)方法  public void func2(){  System.out.println("CCC");  }  }  public class PolymorphismTest {  public static void main(String[] args) {  Father child = new Child();  child.func1();//打印結(jié)果將會(huì)是什么?  }  }

上面的程序是個(gè)很典型的多態(tài)的例子。子類(lèi)Child繼承了父類(lèi)Father,并重載了父類(lèi)的func1()方法,重寫(xiě)了父類(lèi)的func2()方法。重載后的func1(int i)和func1()不再是同一個(gè)方法,由于父類(lèi)中沒(méi)有func1(int i),那么,父類(lèi)類(lèi)型的引用child就不能調(diào)用func1(int i)方法。而子類(lèi)重寫(xiě)了func2()方法,那么父類(lèi)類(lèi)型的引用child在調(diào)用該方法時(shí)將會(huì)調(diào)用子類(lèi)中重寫(xiě)的func2()。
那么該程序?qū)?huì)打印出什么樣的結(jié)果呢?

很顯然,應(yīng)該是“CCC”。

對(duì)于多態(tài),可以總結(jié)它為:

一、使用父類(lèi)類(lèi)型的引用指向子類(lèi)的對(duì)象;

二、該引用只能調(diào)用父類(lèi)中定義的方法和變量;

三、如果子類(lèi)中重寫(xiě)了父類(lèi)中的一個(gè)方法,那么在調(diào)用這個(gè)方法的時(shí)候,將會(huì)調(diào)用子類(lèi)中的這個(gè)方法;(動(dòng)態(tài)連接、動(dòng)態(tài)調(diào)用)

四、變量不能被重寫(xiě)(覆蓋),”重寫(xiě)“的概念只針對(duì)方法,如果在子類(lèi)中”重寫(xiě)“了父類(lèi)中的變量,那么在編譯時(shí)會(huì)報(bào)錯(cuò)。

到此,相信大家對(duì)“Java多態(tài)性怎么理解”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢(xún),關(guān)注我們,繼續(xù)學(xué)習(xí)!

當(dāng)前文章:Java多態(tài)性怎么理解
當(dāng)前路徑:http://aaarwkj.com/article18/jjhgdp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、、網(wǎng)頁(yè)設(shè)計(jì)公司標(biāo)簽優(yōu)化、網(wǎng)站策劃定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)
午夜在线精品福利视频| 亚洲日本一区二区一本一道| 欧美夫妻成人性生活视频| 青青草原一区在线观看| 成人黄片在线免费播放| 欧美高清在线观看视频| 女同av免费观看网站| 欧美国产大片一区视频| 亚洲综合偷拍欧美一区色| 国产亚洲欧美日韩看国产| 日本午夜视频在线观看| 人妻大乳一区二区三区| av天堂午夜精品蜜臀| 日本成人精品二区在线观看| 日本一区二区欧美在线| 国产精品18禁一区二区三区| 下载一个日韩暴力黄色录像| 亚洲国产韩国精品在线| 厕所偷拍视频一区二区三区| 国产精品青青在线观看爽香蕉| 色婷婷av一区二区三| 日本理论午夜三级在线观看| 91熟女成人精品一区二区| 色婷婷av一区二区三区张| 可以免费在线看的av网站| 欧美日韩国产另类一区二区| 男女性情视频免费大全网站| 国产精品亚洲在钱视频| 人妻av天堂综合一区| 久久国产国内精品国语对白| 一区二区三区国产精品乱码| 欧美日本一区二区三区免费| 天堂在线av免费观看| 久久久久久精品国产av| 中文字幕日韩人妻av| 欧美性大片免费在线观看| 中文字幕二区三区av| 亚洲免费视频区一区二| 最近日本免费高清完整版| 国产精品亚洲在线视频| 一区二区三区在线观看美女视频|