讓我們假設我有2個班級。爲什麼它允許通過引用一個類的實例來調用靜態方法?
父類:
public class ParentClass {
public static void getInstance(){
System.out.println("Parent method");
}
}
ChildClass:
public class ChildClass extends ParentClass {
public static void getInstance(){
System.out.println("child method");
}
public static void main(String args[]){
ParentClass pc=new ChildClass();
pc.getInstance();
}
}
,你這兩類上述通告呼籲getInstance()
和Java和許多其他語言的靜態方法,如果有一個繼承方法,並且在子類中有相同的方法,那麼執行的方法就是在子類中的方法。
問題是:爲什麼pc.getInstance();
調用父類中的方法?是啊沒有方法重寫靜態方法,但任何人都可以請解釋更多的電腦實例的怪異行爲,爲什麼它引用父方法,即使它指向子類? 爲什麼它可以通過引用一個類的實例來調用一個靜態方法?
感謝
更改'ParentClass pc = new ChildClass();'到'ChildClass pc = new ChildClass();'看看會發生什麼。 –
子類中的靜態方法僅隱藏父級靜態方法。在靜態方法中沒有方法重寫 – awsome
編輯過........ –