【发布时间】:2015-05-02 18:35:05
【问题描述】:
我正在尝试做一些多态性练习,但我无法弄清楚这种多态性是如何工作的。我没有找到任何关于这种锻炼的深入信息。希望大家多多指教。
练习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?
}
}
提前谢谢你!
问候
【问题讨论】:
-
练习 2 的一些答案是错误的,如果您实际运行代码,这可能解释了您的困难。请参阅下面的答案。
标签: java polymorphism subclass superclass