java靜態方法的重寫,為什麼不能?
阿新 • • 發佈:2019-02-10
JAVA靜態方法形式上可以重寫,但從本質上來說不是JAVA的重寫。因為靜態方法只與類相關,不與具體實現相關,宣告的是什麼類,則引用相應類的靜態方法(本來靜態無需宣告,可以直接引用),看下例子:
Java程式碼
以上輸出的結果是:A
B
A
D
非靜態方法 按重寫規則呼叫相應的類實現方法,而靜態方法只與類相關。
Java程式碼
- class Base{
- staticvoid a( ){System.out.println("A"); }
- void b( ){System.out.println("B"); }
- }
- publicclass Inherit extends Base{
- staticvoid a( ){System.out.println("C"); }
- void b( ){System.out.println("D"); }
- public
- Base b=new Base();
- Base c=new Inherit();
- b.a();
- b.b();
- c.a();
- c.b();
- }
- }
以上輸出的結果是:A
B
A
D
非靜態方法 按重寫規則呼叫相應的類實現方法,而靜態方法只與類相關。