0
我是新来的Java世界,我有一些问题想出Java如何决定当有多态性时调用哪个方法。你能帮我弄清楚这个例子的工作原理吗? 我试了一下代码,看到了结果。我更感兴趣的是它为什么这样工作。如何完成类型解析?
class A {
void redef(A a) { System.out.println("[A]"); }
}
class B extends A {
//@Override
void redef(B b) { System.out.println("[B]"); }
}
class C extends B {
}
public class Surcharge {
static void surcharge(A a) { System.out.println("[A]"); }
static void surcharge(B b) { System.out.println("[B]"); }
public static void main(String[] argv) {
A a = new A() ;
B b = new B() ;
A ab = new B();
C c = new C();
ab.redef(c); //?
surcharge(a); //?
surcharge(b); //?
surcharge(c); //?
surcharge(ab); //?
}
}
你为什么不把你的问题缩小到这里对你没有意义的行为?就目前而言,这太像“在这里,为我做我的作业”。 – 2013-03-19 14:59:05
此外,您可能需要阅读[FAQ](http://stackoverflow.com/faq)。你应该总是包括[你尝试过](http://mattgemmell.com/2008/12/08/what-have-you-tried/)以及你在问题中所做的任何研究。 – 2013-03-19 15:05:20