java中static,final,private方法的繼承多態問題


父類中的final  private方法不能被繼承,父類中的static方法可以被繼承,但是不能重寫,這三者都屬於前期綁定,java中除了這三種以及構造方法之外剩下的都是后期綁定(運行是綁定).

當父類的引用指向子類時,調用靜態方法看引用,調用普通方法看對象。

靜態的方法可以被繼承,但是不能重寫。如果父類中有一個靜態的方法,子類也有一個與其方法名,參數類型,參數個數都一樣的方法,並且也有static關鍵字修飾,那么該子類的方法會把原來繼承過來的父類的方法隱藏,而不是重寫。通俗的講就是父類的方法和子類的方法是兩個沒有關系的方法,具體調用哪一個方法是看是哪個對象的引用;這種父子類方法也不在存在多態的性質。

java不推薦用對象調用static方法,這會使人混淆,請大家注意。

 

這也是為什么abstract修飾的method是不可同時是static的原因:

abstract修飾方法,子類需要重寫去實現,主要用於各個子類的實例對象; 
static修飾方法,則方法不屬於某個對象,屬於class,可用class名.方法名(),進行調用;

簡單的說abstract實例對象; 
而static屬於類。 
所以static方法不能是abstract方法。

java動態綁定以及內部實現機制

 https://wenku.baidu.com/view/32208418650e52ea55189863.html


免責聲明!

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



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