JAVA父類的靜態方法能否被子類重寫?


靜態:

  在編譯時所分配的內存會一直存在(不會被回收),直到程序退出內存才會釋放這個空間,在實例化之前這個方法就已經存在於內存,跟類的對象沒什么關系。子類中如果定義了跟父類相同名稱、相同的形參列表、相同返回值類型的靜態方法,就滿足重寫的條件,於是在內存中又分配了一塊給子類的靜態方法,重寫了父類方法。

 

父類代碼

1 public class Fu {
2     public static void show() {
3         System.out.println("父類的靜態方法");
4     }
5     public void method() {
6         System.out.println("父類的一般方法");
7     }
8 }

 

子類代碼

public class Zi extends Fu {
    public static void main(String[] args) {
        Fu fu = new Zi();
        fu.show();
        fu.method();
    }
    public static void show() {
        System.out.println("子類的靜態");
    }
    public void method() {
        System.out.println("子類的一般方法");
    }
    
}

 輸出結果是:

 父類的靜態方法

 子類的一般方法 

 

  當父類引用指向子類對象,只會調用父類的靜態方法,此行為並不具有多態性!所以子類重寫父類的靜態方法,並沒有實際意義!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM