假设我们有:
interface A{
void foo();
}
class B implements A{
void foo(){}
void doNothing(){}
}
我创建一个B实例
A object=new B();
为什么在调用 object.doNothing() 时会引发编译错误?
最佳答案
因为,在编译时,Compilter 检查引用类型方法绑定(bind)。所以 doNothing()
方法在接口(interface) A
在编译时,编译器无法确定在这些引用上对方法 doNothing()
的调用实际上指的是方法的哪个版本——父类(super class)版本还是子类版本.
关于java - 为什么动态类型方法不可见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27794826/