这是我无法弄清楚的功课问题。
找到输出:
public static void main(String[] args) {
Object o = new A();
A a2 = new B();
B b = new B();
a2.report(b);
}
public class A {
public void report(Object o) {
System.out.println("Object");
}
public void report(A a) {
System.out.println("A");
}
}
public class B extends A {
public void report(A a) {
System.out.println("A again");
}
public void report(B b) {
System.out.println("B");
}
}
当我尝试使用该解决方案时,我首先尝试弄清楚在编译时会发生什么。我认为a2会使用A类并报告未在A类中定义的b,因此默认为报告对象。这将给出" Object"的解决方案。但是,这是不正确的。我无法弄清楚这种方法如何报告" A"当函数应该是调用报告(B b)。