1. 程式人生 > >java靜態方法的重寫,為什麼不能?

java靜態方法的重寫,為什麼不能?

JAVA靜態方法形式上可以重寫,但從本質上來說不是JAVA的重寫。因為靜態方法只與類相關,不與具體實現相關,宣告的是什麼類,則引用相應類的靜態方法(本來靜態無需宣告,可以直接引用),看下例子:
Java程式碼  收藏程式碼
  1. class Base{  
  2.         staticvoid a( ){System.out.println("A");  }  
  3.                  void b( ){System.out.println("B"); }  
  4. }  
  5. publicclass  Inherit extends Base{  
  6.           staticvoid a( ){System.out.println("C");  }  
  7.                   void b( ){System.out.println("D"); }  
  8.            public
    staticvoid main(String args[]){  
  9.                     Base b=new Base();  
  10.                     Base  c=new Inherit();  
  11.                     b.a();  
  12.                     b.b();  
  13.                     c.a();  
  14.                     c.b();  
  15.          }  
  16. }  


以上輸出的結果是:A
                           B
                           A
                           D
非靜態方法 按重寫規則呼叫相應的類實現方法,而靜態方法只與類相關。