日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java继承多态经典案例分享

發布時間:2024/4/15 java 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java继承多态经典案例分享 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

?

今天動力節點java培訓機構小編為大家分享Java繼承多態經典案例,希望通過此文能夠幫助到大家,下面就隨小編一起看看Java繼承多態經典案例。

?

public class A {

public String show(D obj) {

return ("A and D");

}

?

public String show(A obj) {

return ("A and A");

}

}

?

?

public class B extends A {

public String show(B obj) {

return ("B and B");

}

?

public String show(A obj) {

return ("B and A");

}

}

?

?

public class C extends B{

?

}

?

?

public class D extends B{

?

}

?

?

public class Demo2 {

public static void main(String[] args) {

A a1 = new A();

A a2 = new B();

B b = new B();

C c = new C();

D d = new D();

?

System.out.println(a1.show(b)); // A and A??

System.out.println(a1.show(c)); // A and A??

System.out.println(a1.show(d)); // A and D??

System.out.println(a2.show(b)); // B and A??

System.out.println(a2.show(c)); // B and A?

System.out.println(a2.show(d)); // A and D??

System.out.println(b.show(b));? // B and B??

System.out.println(b.show(c));? // B and B??

System.out.println(b.show(d));? // A and D??

}

}

?

  分析:

?

  多態的兩種形式:1、父類做形參,子類做實參。2、父類的引用指向子類的實例對象。

?

  首先分析一個各個類所具有的方法。

?

  A:public String show(D obj); public String show(A obj);

?

  B:public String show(D obj); public String show(A obj); public String show(B obj); public String show(A obj);-(被重寫)

?

  C:public String show(D obj); public String show(A obj); public String show(B obj); public String show(A obj);-(被重寫)

?

  D:public String show(D obj); public String show(A obj); public String show(B obj); public String show(A obj);-(被重寫)

?

  執行程序。

?

  A a1 = new A();A a2 = new B();,a1 是多態形式1。看如下代碼。System.out.println(a1.show(b));A中的show方法只有D A 做形參,沒有B做形參的,然而A是B的父類,所以,這里實現的是多態形式1。 System.out.println(a1.show(c));同上一個,A是C的間接父類。System.out.println(a1.show(d));由于有D做形參的方法,所以直接使用。

?

  System.out.println(a2.show(b));這個比較復雜, 明確一點很重要:a2是A類的引用,只能引用A中已有的方法,沒有的方法不能引用,有人會說為什么不是 “B and B”,輸出“B and B”的方法是子類B的方法,顯然不會調用。具體過程而是查看A中的方法,發現沒有以B為參數的方法,但有以A為參數的方法,父類為形參,這里又是第一種形式的多態,于是就調用這個方法,但是這個方法在B中重寫了,所以就會調用子類的方法輸出“B and A”。System.out.println(a2.show(c));同理,C的間接父類是A。System.out.println(a2.show(d)); A中有以D為參數的方法,直接調用。

?

  System.out.println(b.show(b));查看B中有沒有以B為參數的方法,直接調用B的以B為參數的方法。System.out.println(b.show(c)); 查看B中有沒有以C為參數的方法,但是沒有,于是查找父類中有沒有以B為參數的方法。也沒有,于是查找B中有沒有以父類B為參數的方法,索性,這里有所以就調用。假設,這里沒有的話,就會繼續查找有沒有以間接父類A為參數的方法。System.out.println(b.show(d)); 查找B中有沒有以D為參數的方法,但是沒有,于是看看從父類繼承來的方法中有沒有以D為參數的方法,顯然有,所以調用并輸出。

?

  總結

?

  明確多態的兩種形式,謹記父類引用只能調用父類的方法,不能調用子類中的方法。如果調用到了子類的方法,那么一定是子類中重寫的方法。

?

  super關鍵字用于調用子類中從父類繼承得到的成員變量和方法,this關鍵字用于調用當前對象的屬性和方法。

?

以上就是動力節點java培訓機構小編為大家分享的“Java繼承多態經典案例”的內容,希望對大家有幫助,更多java最新資訊請繼續關注動力節點java培訓機構官網,每天會有精彩內容分享與你。

總結

以上是生活随笔為你收集整理的Java继承多态经典案例分享的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。