成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

9. java 多態(tài)

wanglu1209 / 1593人閱讀

摘要:概念所謂多態(tài),就是指一個(gè)引用變量類型在不同的情況下的多種狀態(tài)。需進(jìn)行強(qiáng)制轉(zhuǎn)換有風(fēng)險(xiǎn),最好使用進(jìn)行判斷。繼承在多態(tài)中必須存在有繼承關(guān)系的子類和父類。在中有兩種形式可以實(shí)現(xiàn)多態(tài)繼承和接口。

概念

所謂多態(tài),就是指一個(gè)引用變量(類型)在不同的情況下的多種狀態(tài)。也可以理解為,多態(tài)是指通過指向父類的指針,來調(diào)用在不同子類中實(shí)現(xiàn)的方法。多態(tài)性是對(duì)象多種表現(xiàn)形式的體現(xiàn)

多態(tài)性嚴(yán)格來說有兩種描述形式:

方法的多態(tài)性:

方法的重載

方法的重寫

對(duì)象的多態(tài)性: 指的是發(fā)生在繼承關(guān)系類之中,子類和父類之前的轉(zhuǎn)換問題

向上轉(zhuǎn)型 : 父類 父類對(duì)象 = 子類實(shí)例

向下轉(zhuǎn)型 : 子類 子類對(duì)象 = (子類)父類實(shí)例 。 需進(jìn)行強(qiáng)制轉(zhuǎn)換,有風(fēng)險(xiǎn),最好使用 instanceof 進(jìn)行判斷。

class A {
    public void fun(){
        System.out.println("A ");
    }
}

class B extends A{
    public void fun(){  //重寫父類方法
        System.out.println("B");
    }
}
public class testDemo {
    public static void main(String[] args) {
        A a = new B(); //向上轉(zhuǎn)型
        B b = (B)a; //向下轉(zhuǎn)型
        a.fun();
         // a.funb();  //父類中不能調(diào)用子類中擴(kuò)展的方法
        b.fun();
        System.out.println(a instanceof A);
        System.out.println(a instanceof B);
        System.out.println(b instanceof A);
        System.out.println("**********");
        A a2 = new A();
        System.out.println(a2 instanceof A);
        System.out.println(a2 instanceof B);
    }
}
輸出結(jié)果:
B
B
true
true
true
**********
true
false

Java實(shí)現(xiàn)多態(tài)有三個(gè)必要條件:繼承、重寫、向上轉(zhuǎn)型。

繼承:在多態(tài)中必須存在有繼承關(guān)系的子類和父類。

重寫:子類對(duì)父類中某些方法進(jìn)行重新定義,在調(diào)用這些方法時(shí)就會(huì)調(diào)用子類的方法。

向上轉(zhuǎn)型:在多態(tài)中需要將子類的引用賦給父類對(duì)象,只有這樣該引用才能夠具備技能調(diào)用父類的方法和子類的方法。

只有滿足了上述三個(gè)條件,我們才能夠在同一個(gè)繼承結(jié)構(gòu)中使用統(tǒng)一的邏輯實(shí)現(xiàn)代碼處理不同的對(duì)象,從而達(dá)到執(zhí)行不同的行為。

對(duì)于Java而言,它多態(tài)的實(shí)現(xiàn)機(jī)制遵循一個(gè)原則:當(dāng)超類對(duì)象引用了子類對(duì)象時(shí),被引用對(duì)象的類型而不是引用變量的類型決定了調(diào)用誰的成員方法,但是這個(gè)被調(diào)用的方法必須是在超類中定義過的,也就是說被子類覆蓋的方法。

多態(tài)分為編譯時(shí)多態(tài)和運(yùn)行時(shí)多態(tài)。其中編輯時(shí)多態(tài)是靜態(tài)的,主要是指方法的重載,它是根據(jù)參數(shù)列表的不同來區(qū)分不同的函數(shù),通過編輯之后會(huì)變成兩個(gè)不同的函數(shù),在運(yùn)行時(shí)談不上多態(tài)。而運(yùn)行時(shí)多態(tài)是動(dòng)態(tài)的,它是通過動(dòng)態(tài)綁定來實(shí)現(xiàn)的,也就是我們所說的多態(tài)性。

在Java中有兩種形式可以實(shí)現(xiàn)多態(tài):繼承和接口。

多態(tài)的優(yōu)點(diǎn)

消除類型之間的耦合關(guān)系

可替換性

可擴(kuò)充性

接口性

靈活性

簡(jiǎn)化性

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/73555.html

相關(guān)文章

  • Java多態(tài)

    摘要:調(diào)用的是的方法,因?yàn)橄蛏限D(zhuǎn)型為,那么只能調(diào)用類的方法,里參數(shù)有和兩種,所以對(duì)應(yīng)于對(duì)應(yīng)于對(duì)應(yīng)于,由于多態(tài)性,最終調(diào)用的是即由于是的子類,那么可以繼承的所有非方法,當(dāng)然的也在內(nèi),所以,就直接調(diào)用的是即 1.基于繼承覆蓋 子類覆蓋父類的方法,實(shí)現(xiàn)多態(tài) 抽象 子類實(shí)現(xiàn)父類的抽象方法,實(shí)現(xiàn)多態(tài) 2.基于接口 3.案例 摘自http://www.cnblogs.com/chenss... publ...

    Charles 評(píng)論0 收藏0
  • Java 面向?qū)ο筇匦灾?em>多態(tài)性

    摘要:多態(tài)性面向?qū)ο笕筇匦苑庋b繼承多態(tài)。面向?qū)ο蠖鄳B(tài)性存在的三個(gè)必要條件繼承重寫父類引用指向子類對(duì)象多態(tài)性的實(shí)現(xiàn)方式重寫與重載靜態(tài)多態(tài)性方法重載方法重載允許類具有多個(gè)相同名稱的方法,但是方法參數(shù)列表不同。 多態(tài)性 面向?qū)ο螅∣OP)三大特性:封裝、繼承、多態(tài)。 多態(tài)性(polymorphism)指同一行為具有多種不同表現(xiàn)形式,在面向?qū)ο蟪绦蛟O(shè)計(jì)中表現(xiàn)為同一消息可以根據(jù)發(fā)送對(duì)象的類型不同,做...

    _ang 評(píng)論0 收藏0
  • Java問題匯總,持續(xù)更新到GitHub

    摘要:目錄介紹問題匯總具體問題好消息博客筆記大匯總年月到至今,包括基礎(chǔ)及深入知識(shí)點(diǎn),技術(shù)博客,學(xué)習(xí)筆記等等,還包括平時(shí)開發(fā)中遇到的匯總,當(dāng)然也在工作之余收集了大量的面試題,長期更新維護(hù)并且修正,持續(xù)完善開源的文件是格式的同時(shí)也開源了生活博客,從年 目錄介紹 00.Java問題匯總 01.具體問題 好消息 博客筆記大匯總【16年3月到至今】,包括Java基礎(chǔ)及深入知識(shí)點(diǎn),Android技...

    beita 評(píng)論0 收藏0
  • 談?wù)?em>Java的面向?qū)ο?/b>

    摘要:也就是說,一個(gè)實(shí)例變量,在的對(duì)象初始化過程中,最多可以被初始化次。當(dāng)所有必要的類都已經(jīng)裝載結(jié)束,開始執(zhí)行方法體,并用創(chuàng)建對(duì)象。對(duì)子類成員數(shù)據(jù)按照它們聲明的順序初始化,執(zhí)行子類構(gòu)造函數(shù)的其余部分。 類的拷貝和構(gòu)造 C++是默認(rèn)具有拷貝語義的,對(duì)于沒有拷貝運(yùn)算符和拷貝構(gòu)造函數(shù)的類,可以直接進(jìn)行二進(jìn)制拷貝,但是Java并不天生支持深拷貝,它的拷貝只是拷貝在堆上的地址,不同的變量引用的是堆上的...

    ormsf 評(píng)論0 收藏0
  • Thinking in Java-接口

    摘要:具體而言就是高層模塊不依賴于底層模塊,二者都同依賴于抽象抽象不依賴于具體,具體依賴于抽象。 9.接口 9.1 抽象類和抽象方法 抽象類:包含抽象方法的類,自身無法實(shí)例化 抽象方法:僅有聲明,沒有方法體 關(guān)系:抽象方法是抽象類的充分不必要條件,因此抽象類中允許方法實(shí)現(xiàn)和抽象方法同時(shí)存在 語法 // 抽象類 abstract class ClassName{} // 抽象方法 ab...

    silenceboy 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<