class A {
public void doSomething(float f) {
//print "in A"
}
}
class B extends A {
public void doSomething(int i) {
// print "in B"
}
public static void main(String[] args) {
A a = new B();
a.doSomething(10);
}
}
Run Code Online (Sandbox Code Playgroud)
编译器首先检查doSomething()A 类中是否存在。一旦确认,在运行时,将检查对象类型并执行相应的方法,该方法doSomething()应该执行 B 类的方法,但会执行doSomething()类的方法。A
如果两个方法相同,则只会B doSomething()执行类。编译器如何决定某个方法被重写,从而由 JVM 处理?