1. 程式人生 > >static的繼承:靜態方法只能隱藏(hidden),不能重寫(override)

static的繼承:靜態方法只能隱藏(hidden),不能重寫(override)

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"); } }


非靜態方法 按重寫規則呼叫相應的類實現方法,而靜態方法只與類相關。

       所謂靜態,就是在執行時,虛擬機器已經認定此方法屬於哪個類。

專業術語有嚴格的含義,用語要準確."重寫"只能適用於例項方法.不能用於靜態方法.對於靜態方法,只能隱藏(剛才的例子可以重寫那只是形式上的 ,並不滿足多型的特徵,所以嚴格說不是重寫)。

      靜態方法的呼叫不需要例項化吧..  不例項化也就不能用多型了,也就沒有所謂的父類引用指向子類例項.因為不能例項化 也就沒有機會去指向子類的例項。所以也就不存在多型了。