多態(tài)的再理解

對象的多種形態(tài)

1.引用形態(tài)

父類的引用可以指向本類的對象

父類的引用可以指向子類的對象

Animal d=new Animal();

Animal d2=new Dog(); //父類變量不能引用子類的對象

但是Dog d2=new Animal();就是錯(cuò)的 子類變量不能引用父類的對象

2.方法多態(tài)

創(chuàng)建本類對象時(shí),調(diào)用的方法為本類方法

創(chuàng)建子類對象時(shí),調(diào)用的方法為子類重寫的方法或者繼承的方法

public class Cat extends Animal {

}

public class Initial {

public static void main(String[] args) {

Animal d=new Animal();

Animal d2=new Dog();

Animal d3=new Cat();

d.eat();

d3.watchddor();// 這是不行的 ,因?yàn)閣atchdoor是子類專有的方法

d3.eat();//雖然d3 cat類里面什么也沒有,但是因?yàn)槎鄳B(tài)的原因 它會(huì)調(diào)用父類的方法

}

}


publicclassA{

publicStringshow(D obj){

return("A and D");

        } 



publicStringshow(A obj){

return("A and A");

        } 



    } 



publicclassBextendsA{

publicStringshow(B obj){

return("B and B");

        } 



publicStringshow(A obj){

return("B and A");

        } 

    } 



publicclassCextendsB{



    } 



publicclassDextendsB{



    } 



publicclassTest{

publicstaticvoidmain(String[] args){

A a1 =newA();

A a2 =newB();

B b =newB();

C c =newC();

D d =newD();



System.out.println("1--"+ a1.show(b));

System.out.println("2--"+ a1.show(c));

System.out.println("3--"+ a1.show(d));

System.out.println("4--"+ a2.show(b));//4--B and A .首先a2是A引用,B實(shí)例,調(diào)用show(B b)方法,此方法在父類A中沒有定義,所以B中方法show(B b)不會(huì)調(diào)用(多態(tài)必須父類中已定義該方法),再按優(yōu)先級為:this.show(O)、super.show(O)、this.show((super)O)、super.show((super)O),即先查this對象的父類,沒有重頭再查參數(shù)的父類。查找super.show((super)O)時(shí),B中沒有,再向上,找到A中show(A a),因此執(zhí)行。

System.out.println("5--"+ a2.show(c));//同上

System.out.println("6--"+ a2.show(d));//A and D .查找B中沒有show(D d)方法,再查A中,有,執(zhí)行。

System.out.println("7--"+ b.show(b));

System.out.println("8--"+ b.show(c));//B and B .

System.out.println("9--"+ b.show(d));

        } 

    }


1--A and A

2--A and A

3--A and D

4--B and A

5--B and A

6--A and D

7--B and B

8--B and B

9--A and D

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.import static是Java 5增加的功能,就是將Import類中的靜態(tài)方法,可以作為本類的靜態(tài)方法來...
    XLsn0w閱讀 1,437評論 0 2
  • 面向?qū)ο笾饕槍γ嫦蜻^程。 面向過程的基本單元是函數(shù)。 什么是對象:EVERYTHING IS OBJECT(萬物...
    sinpi閱讀 1,228評論 0 4
  • 多態(tài)就是對象的多種形態(tài),即相同的消息使得不同的類做出不同的響應(yīng)。 多態(tài)存在的三個(gè)必要條件:繼承、重寫、父類變量引用...
    予別她閱讀 488評論 0 0
  • 一.成員變量與局部變量的區(qū)別 成員變量:在類中定義,用來描述對象將要有什么(屬性)。可被本類方法和其他跟當(dāng)前類有關(guān)...
    jeffierw閱讀 642評論 0 0
  • 滿眼望去,那一樹一樹的桃花正熱鬧地開放,我忽然發(fā)現(xiàn),原來同一棵樹上的花兒也是千姿百態(tài),形態(tài)各異,樹干上的花兒盛開得...
    官小姐不當(dāng)官閱讀 300評論 0 0

友情鏈接更多精彩內(nèi)容