讓我們考慮下面的示例。使用接口引用訪問java對象類方法
public interface SimpleInterface {
public void simpleMethod();
}
public class SimpleClass implements SimpleInterface{
public static void main(String[] args) {
SimpleInterface iRef = new SimpleClass();
SimpleClass cRef = new SimpleClass();
iRef.simpleMethod(); // Allowed. Calling methods defined in interface via interface reference.
cRef.specificMethod(); // Allowed. Calling class specific method via class reference.
iRef.specificMethod(); // Not allowed. Calling class specific method via interface reference.
iRef.notify(); // Allowed????
}
public void specificMethod(){}
@Override
public void simpleMethod() {}
}
我認爲,在Java中使用的接口引用,我們可以訪問只在該接口中定義的方法。但是,它似乎允許通過任何接口引用來訪問類Object的方法。我的具體類「SimpleClass」繼承了Object類所有的方法,並且絕對的類Object沒有實現任何接口(人們會假設Object實現了一些接口,例如notify,wait等方法)。我的問題是,爲什麼允許通過接口引用訪問類Object的方法,考慮到我的具體類中的其他方法是不允許的?
謝謝。我認爲這是可以接受的答案。所以,這意味着在Java中,任何接口都具有類Object的「隱藏聲明」方法,對嗎? – sergeyan
@sergeyan是的。究竟。 –