摘要:調用的是的方法,因為向上轉型為,那么只能調用類的方法,里參數有和兩種,所以對應于對應于對應于,由于多態性,最終調用的是即由于是的子類,那么可以繼承的所有非方法,當然的也在內,所以,就直接調用的是即
1.基于繼承
覆蓋
子類覆蓋父類的方法,實現多態
抽象
子類實現父類的抽象方法,實現多態
2.基于接口
3.案例
摘自http://www.cnblogs.com/chenss...
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 Test { 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("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)); System.out.println("5--" + a2.show(c)); System.out.println("6--" + a2.show(d)); System.out.println("7--" + b.show(b)); System.out.println("8--" + b.show(c)); 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
我來理解下4、5和9:
a2.show(b)
A a2 = new B();a2.show(b);
調用的是a2的方法,因為a2向上轉型為A,那么show只能調用類A的方法,A里有參數為A和D兩種,所以a2.show(b)對應于A.show(B)對應于A.show(A),由于多態性,最終調用的是B.show(A)即B and A。
a2.show(c)
A a2 = new B();a2.show(c);
調用的是a2的方法,因為a2向上轉型為A,那么show只能調用類A的方法,A里參數有A和D兩種,所以a2.show(b)對應于A.show(C)對應于A.show(B)對應于A.show(A),由于多態性,最終調用的是B.show(A)即B and A.
b.show(d)
B b = new B();D d = new D();b.show(d);
由于B是A的子類,那么B可以繼承A的所有非private方法,當然A的show(D)也在內,所以,就直接調用的是A.show(D)即A and D.
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/70437.html
摘要:概念所謂多態,就是指一個引用變量類型在不同的情況下的多種狀態。需進行強制轉換有風險,最好使用進行判斷。繼承在多態中必須存在有繼承關系的子類和父類。在中有兩種形式可以實現多態繼承和接口。 概念 所謂多態,就是指一個引用變量(類型)在不同的情況下的多種狀態。也可以理解為,多態是指通過指向父類的指針,來調用在不同子類中實現的方法。多態性是對象多種表現形式的體現 多態性嚴格來說有兩種描述形式:...
摘要:當我們對一些函數發出調用的消息時,這些函數會返回不同的執行結果,這是多態性的一種體現,也是很多設計模式在中可以用高階函數來代替實現的原因。 PS:上一篇文章發表之后,很多朋友關注了本人的思否和掘金的博客,雖然關注的朋友還有有限,但足夠讓我把自己在技術上的問題積累分享給大家,也希望大家能夠喜歡,同時能動一動手指,給一顆心(贊),博主會持續更新下去 多態 本文是《javascript設計模...
摘要:中的多態引用的多態父類的引用是可以指向子類對象報錯方法多態動物具有吃的能力狗具有吃肉的能力狗具有看門的能力父類的引用是可以指向子類對象報錯 java中的多態 showImg(https://segmentfault.com/img/bVbnDYA?w=1138&h=612); showImg(https://segmentfault.com/img/bVbnD6B?w=344&h=17...
摘要:在面向對象的程序設計語言中,多態是繼數據抽象和繼承之后的第三種基本特征。 在面向對象的程序設計語言中,多態是繼數據抽象和繼承之后的第三種基本特征。 1.再論向上轉型 多態作用:消除類型之間的耦合關系. 2.轉機 綁定:將一個方法調用同一個方法主體關聯起來. 前期綁定:在程序執行前就進行綁定(面向過程語言默認綁定方式). 后期綁定:也叫動態綁定或運行時綁定,在運行時根據對象的類型進行綁...
摘要:為什么不是面向對象不是面向對象,因為它包含個原始數據類型,例如。自定義類加載器繼承的自定義類加載器。可以像下面這樣指定參數面試題面向對象,類加載器,基礎概念它們的關系如下啟動類加載器,實現,沒有父類。自定義類加載器,父類加載器為。 1. 為什么說Java是一門平臺無關語言? 平臺無關實際的含義是一次編寫到處運行。Java 能夠做到是因為它的字節碼(byte code)可以運行在任何操作...
閱讀 2805·2023-04-25 23:08
閱讀 1594·2021-11-23 09:51
閱讀 1575·2021-10-27 14:18
閱讀 3125·2019-08-29 13:25
閱讀 2839·2019-08-29 13:14
閱讀 2913·2019-08-26 18:36
閱讀 2200·2019-08-26 12:11
閱讀 821·2019-08-26 11:29