Java中關(guān)于靜態(tài)方法的繼承

靜態(tài)一直非常神秘的存在
父類代碼

   class Parent {
        public void method() {
            System.out.println("parent method");
        }

        public static void staticMethod() {
            System.out.println("parent static method");
        }
    }

子類代碼

 class Child extends Parent {
        @Override
        public void method() {
            System.out.println("child method");
        }

        //@Override  error:Method does not override method from its superclass
        public static void staticMethod() {
            System.out.println("child static method");
        }
    }

測試輸出

    public static void main(String[] arg) {
        Parent parent = new Child();
        parent.method();
        parent.staticMethod();
    }

結(jié)果

Paste_Image.png

從代碼中可以看到,在子類中靜態(tài)方法不能用@Override注解,用的話會(huì)報(bào)錯(cuò);從輸出結(jié)果可以看出,子類并沒有復(fù)寫父類的靜態(tài)方法,這是為什么呢?
因?yàn)榉椒恿?code>static關(guān)鍵字修飾后,靜態(tài)是隨著類的加載而加載的,優(yōu)先于對(duì)象存在,所以該方法就屬于類的,可以用類名直接調(diào)用,子類不能復(fù)寫。

總結(jié):父類的靜態(tài)方法可以被子類繼承,但是不能重寫。

小拓展:內(nèi)部類中如果有靜態(tài)字段或靜態(tài)方法,則這個(gè)內(nèi)部類也必須用靜態(tài)修飾,否則會(huì)報(bào)Inner classes cannot have static declarations錯(cuò)誤。

參考鏈接

子類能否重寫父類的靜態(tài)方法

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容