我的问题是我无法理解方法解析在以下情况下如何工作:假设,我们有两个包,A和B.有两个类,A放在内A,B内B.
A:
package com.eka.IO.a;
import com.eka.IO.b.B;
public class A {
void foo() {
System.out.println("parent");
}
public static void main(String... args) {
B obj = new B();
obj.foo();
}
}
Run Code Online (Sandbox Code Playgroud)
B:
package com.eka.IO.b;
import com.eka.IO.a.A;
public class B extends A {
public void foo() {
System.out.println("child");
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码打印"child",这是完全正常的.但是如果我按以下方式更改方法main:
public static void main(String... args) {
A obj = new B();
obj.foo();
}
Run Code Online (Sandbox Code Playgroud)
代码打印"父",我不明白为什么.(obj具有运行时类型B,B具有公共方法 …