歡聚時(shí)代2017校招筆試題目(JAVA基礎(chǔ)類)A卷
1 以下運(yùn)行結(jié)果哪個(gè)是正確的: ( )
、、、
class A{
public String show(D d){return ("AD");}
public String show(A a){return ("AA");}
}
class B extends A{
public String show(B b){return ("BB");}
public String show(A a){return ("BA");}
}
class C extends B{}
class D extends B{}
public class Test{
public static void main(String[] args) {
A a = new A();
B b = new B();
C c = new C();
D d = new D();
System.out.println(a.show(b)+"-"+a.show(c)+"-"+a.show(d)+"-"+b.show(a)+"-"+b.show(c)+"-"+b.show(d));
}
}
、、、
A、AD-AA-AD-BA-BB-AD
B、AA-AD-AD-BA-BB-AD
C、AA-AA-AD-BA-BB-AD
D、AA-AA-AD-BA-BA-AD
正確答案: C? 你的答案: C (正確)
解析:
對(duì)象a有兩個(gè)重載的show方法,分別是Show(D d),Show(A a);
對(duì)象b有三個(gè)重載的show方法,分別是Show(B b),Show(A a)以及show(D d)(相當(dāng)于,因?yàn)锽繼承了A,所以有了Show(D d)和Show(A a)),但是B又重寫了show(A a)方法,并新增了方法重載方法Show(B b);因此當(dāng)調(diào)用b.show(a)時(shí)是調(diào)用的自己重寫過(guò)的方法show(A a),當(dāng)調(diào)用b.show(d)時(shí)直接調(diào)用從父類A繼承來(lái)的方法。
a.show(b) 相當(dāng)于對(duì)象a調(diào)用自己的方法show(A a),因?yàn)閎是A類型,而不是D類型的;
a.show(c) 相當(dāng)于對(duì)象a調(diào)用自己的方法show(A a),因?yàn)閏是B類型,即A類型,而不是D類型;
a.show(d) 相當(dāng)于對(duì)象a調(diào)用自己的方法show(D d),因?yàn)閐是D類型的;
b.show(a) 相當(dāng)于對(duì)象b調(diào)用自己的方法show(A a),因?yàn)閍是A類型的;
b.show(c) 相當(dāng)于對(duì)象b調(diào)用自己的方法show(B b),因?yàn)閏是B類型的;
b.show(d) 相當(dāng)于對(duì)象b調(diào)用父類A的方法show(D d)
總結(jié)一下就是,子類先找自己的方法,如果有就直接調(diào)用,若沒有,則檢查繼承自父類的方法。