日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

一道多態(tài)性的題,實在理解不了了~~~~

 ShangShujie 2006-11-19
寫出以下代碼的輸出結果
class A{
 public String f(D obj){return ("A and D");}
 public String f(A obj){return ("A and A");}
}
class B extends A{
 public String f(B obj){return ("B and B");}
 public String f(A obj){return ("B and A");}
}
class C extends B{}
class D extends B{}
class test{
 A a1 = new A();
 A a2 = new B();
 B b = new B();
 C c = new C();
 D d = new D();
 System.out.println(a1.f(b));   A and A
 System.out.println(a1.f(c));   A and A
 System.out.println(a1.f(d));   A and D
 System.out.println(a2.f(b));   B and A
 System.out.println(a2.f(c));   B and A
 System.out.println(a2.f(d));   A and D
 System.out.println(b.f(b));    B and B
 System.out.println(b.f(c));    B and B
 System.out.println(b.f(d));   A and D
}
旁邊的是標準答案,前三個都很好理解,但是后面三個真的是一頭霧水啊,難道b,c都變成類A了?還有d,是不是如果子類里沒有他的方法可調(diào)用,就看超類里是否有與他相對應的方法?
然后最后一個,b不是已經(jīng)聲明為B類了嗎?為什么會調(diào)用A類里的方法呢?為什么結果不能是B and B呢?
大家能幫忙給小弟解解惑嗎?真是一頭霧水啊!~~~~~~~~~~~

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多