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

  • 2019 年 10 月 8 日
  • 筆記

靜態:

  在編譯時所分配的記憶體會一直存在(不會被回收),直到程式退出記憶體才會釋放這個空間,在實例化之前這個方法就已經存在於記憶體,跟類的對象沒什麼關係。子類中如果定義了相同名稱的靜態方法,並不會重寫,而應該是在記憶體中又分配了一塊給子類的靜態方法,沒有重寫這一說,只是單純的名字重複了。

父類程式碼

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("子類的一般方法");      }    }

輸出結果是:

父類的靜態方法

子類的一般方法

  當父類引用指向子類對象,只會調用父類的靜態方法,此行為並不具有多態性!只能說明子類能繼承父類的靜態方法!靜態方法與對象無關!