請在下面的代碼片段中解釋這個問題。是對象層次結構的接口部分嗎?
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
I ref = new B();
ref.equals("");
}
}
interface I{
}
class A {
public void method(){
}
}
class B extends A implements I{
}
請參考main()
,ref.equals()
是允許的,但ref.method()
是不允許的。爲什麼如此?對象是B(或A或任何其他類)的超類,但以同樣的方式A也是B的超類。我的問題是爲什麼A的'method()'不是在'ref'中可見,即爲什麼ref.equals()是允許的,但ref.method()不是?這種方法的可見性檢查如何完成?它是否植根於JVM?