这是一段十分简单的代码
public class Test{
public static void main(String[] args) {
B a = new A();
System.out.println(a.avc(null));
}
}
class A extends B{
public int a = 0;
//@Override
public String avc(Object e ){
return "123456";
}
}
class B{
public Object avc(Object e){
return null;
}
}
A类继承B类,他们有两个仅仅返回值不同的方法
我的问题是:我看到有的书上说编译器编译时会检查一个对象的声明类型中是否含有掉用的这个方法,而虚拟机则会根据他的实际类型选择调用最合适的方法(好像是java核心技术这本书里的),那现在我们用eclipse代码补全这一行,如截图所示,他并没有显示类A中的那个方法,但运行结果确实是运行了A类的方法,这个特性跟书上讲的编译器有一样的特性。那么eclipse的代码补全功能也是根据编译器做的吗?!