靜態:
在編譯時所分配的內存會一直存在(不會被回收),直到程序退出內存才會釋放這個空間,在實例化之前這個方法就已經存在於內存,跟類的對象沒什么關系。子類中如果定義了跟父類相同名稱、相同的形參列表、相同返回值類型的靜態方法,就滿足重寫的條件,於是在內存中又分配了一塊給子類的靜態方法,重寫了父類方法。
父類代碼
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("子類的一般方法"); } }
輸出結果是:
父類的靜態方法
子類的一般方法
當父類引用指向子類對象,只會調用父類的靜態方法,此行為並不具有多態性!所以子類重寫父類的靜態方法,並沒有實際意義!
