0
我想做一些多态性练习,我无法弄清楚这种多态性是如何工作的。我没有找到关于这种行使的深层信息。我希望你们能给我一些解释。java多态性后期绑定规则
练习1:
class Top {
public void m(Middle p) System.out.print("A ");
}
class Middle extends Top {
public void m(Object p) System.out.print("M ");
public void m(Middle p) System.out.print("L ");
}
class Bottom extends Middle {
public void m(Object p) System.out.print("V ");
public void m(Middle p) System.out.print("X ");
}
class Test {
public static void run() {
Top tm = new Middle();
Middle mb = new Bottom();
tm.m (mb); -> L
tm.m(new Bottom()); -> L why?
mb.m(mb); -> X
mb.m(tm); -> V why?
mb.m(new Middle()); -> X
new Bottom().m(tm); -> V
}
}
练习2:
class Top {
public void gg(Top o) System.out.print("A ");
public void gg(Middle m) System.out.print("B ");
}
class Middle extends Top {
public void gg(Top o) System.out.print("L ");
public void gg(Bottom b) System.out.print("M ");
}
class Bottom extends Middle {
public void gg(Top o) System.out.print("X ");
public void gg(Middle m) System.out.print("Z ");
}
class Test {
public static void run() {
Top oo = new Top();
Top ff = new Middle();
Bottom uu = new Bottom();
oo.gg(ff); -> A
oo.gg(uu); -> A why?
ff.gg(ff); -> L
ff.gg(uu); -> B why?
uu.gg(ff); -> X
uu.gg(uu); -> X why?
}
}
预先感谢您!
电贺
参见https://stackoverflow.com/questions/1572322/overloaded-method-selection-based-on-the-parameters-real-type和https://stackoverflow.com/questions/14676395/ java-overloading-method-selection – DNA 2015-03-02 12:05:34
练习2的一些答案是错误的,如果你实际运行代码,这可能解释了你的难度。请参阅下面的答案。 – DNA 2015-03-02 12:26:33