static的繼承:靜態方法只能隱藏(hidden),不能重寫(override)
阿新 • • 發佈:2019-02-13
public class Static {
public static void main(String[] args) {
A a = new A();
a.a();// a
A a1 = new B();
a1.a();// a
B a2 = new B();
a2.a();// b
}
}
class A {
public static void a() {
System.out.println("a");
}
}
class B extends A {
// 不能@Override,編譯器會報錯
public static void a() {
System.out.println("b");
}
}
非靜態方法 按重寫規則呼叫相應的類實現方法,而靜態方法只與類相關。
所謂靜態,就是在執行時,虛擬機器已經認定此方法屬於哪個類。
專業術語有嚴格的含義,用語要準確."重寫"只能適用於例項方法.不能用於靜態方法.對於靜態方法,只能隱藏(剛才的例子可以重寫那只是形式上的 ,並不滿足多型的特徵,所以嚴格說不是重寫)。
靜態方法的呼叫不需要例項化吧.. 不例項化也就不能用多型了,也就沒有所謂的父類引用指向子類例項.因為不能例項化 也就沒有機會去指向子類的例項。所以也就不存在多型了。