我从类中调用某个类(c.doSomething
)的重载方法,并且我将类实例作为参数传递。使用以下方案可以更好地解释:
public class A {
protected int do(){
C.doSomething(this);
}
}
public class B extends A {
public int doSomething(){
do();
}
}
public class C{
public static function doSomething(B b){ System.out.println("b"); }
public static function doSomething(A a){ System.out.println("a"); }
}
现在,如果我在main
中执行以下操作,将doSomething
调用哪个C
方法?
B b = new B();
b.doSomething();
答案 0 :(得分:0)
这被称为“编译时多态”,因为C.doSomething(A a)
被调用,我们在C.doSomething
内调用A
。有趣的是,在调用getClass()
时,将A.do
置于"B"
内会产生b.doSomething
。