Java static的方法不能被重寫

2021-09-02 18:44:00 字數 591 閱讀 4136

原文: 

重寫方法的目的是為了多型,或者說:重寫是實現多型的前提,即重寫是發生在繼承中且是針對非static方法的。

語法上子類允許出現和父類只有方法體不一樣其他都一模一樣的static方法,但是在父類引用指向子類物件時,通過父類引用呼叫的依然是父類的static方法,而不是子類的static方法。

即:語法上static支援重寫,但是執行效果上達不到多型目的

重寫方法的目的是為了多型,或者說:重寫是實現多型的前提,即重寫是發生在繼承中且是針對非static方法的。

語法上子類允許出現和父類只有方法體不一樣其他都一模一樣的static方法,但是在父類引用指向子類物件時,通過父類引用呼叫的依然是父類的static方法,而不是子類的static方法。

即:語法上static支援重寫,但是執行效果上達不到多型目的

class father } 

class son extends father }

public class m

}

自己的體會:

子類重寫靜態方法,編譯器語法不報錯,但是達不到重寫的效果如果給子類重寫的方法設定@override,就會編譯出錯

Java static 修飾的字段 方法

用來區別字段 方法 內部類,初始化 屬於物件還是屬於類本身。static 修飾的成員 字段 方法 隨著所在類的載入而載入 當 jvm 把位元組碼載入金 jvm 的時候,static 修飾的成員已經在記憶體中了 優先於物件的存在 物件是被手動通過 new 關鍵字創造出來的 static 修飾的成員被該...

java static靜態方法的併發性

在做乙個web專案的時候需要做乙個通用類去處理一些問題,想到這個類很多地方都有用到,又不想每次都new乙個,因此就定義了裡面的方法是靜態方法,然後又因為多個靜態方法都用到了同乙個物件,結果定義了乙個類的全域性變數讓每個靜態方法去呼叫它,剛開始沒什麼問題,後來專案上線沒多久就掛了,最後發現這樣做導致了...

java static靜態方法的併發性

在做乙個web專案的時候需要做乙個通用類去處理一些問題,想到這個類很多地方都有用到,又不想每次都new乙個,因此就定義了裡面的方法是靜態方法,然後又因為多個靜態方法都用到了同乙個物件,結果定義了乙個類的全域性變數讓每個靜態方法去呼叫它,剛開始沒什麼問題,後來專案上線沒多久就掛了,最後發現這樣做導致了...