《java與模式》中有句話不對:靜態辦法無法有子類繼承

來源:互聯網
上載者:User
非常抱歉,這句話沒什麼意義,而且容易誤解。已經有好幾個讀者指出這一點,我已經在網站上的勘誤表中改正了。下面針對這個問題加以說明。  
 
(1)一個Java類靜態方法當然可以由子類繼承。比如  
 
class  Base  
{  
   public  static  void  someMethod()  
   {  
       System.out.println("in  static  method");  
   }  
}  
 
class  Derived  extends  Base  
{}  
 
class  Client  
{  
       public  static  void  main(String[]  args)  
       {  
           Derived.someMethod();  
             
           Derived  d  =  new  Derived();  
           d.someMethod();  
       }  
}  
 
運行Client會列印出兩行“in  static  method”,這說明靜態方法確實被子類所繼承。  
 
(2)書中原文想要說的是:“靜態方法不能被子類override,因此不支援多態性。”一個Java方法不能被子類override,也不支援多態性,並不奇怪。構造方法就是如此。TIJ說構造方法是隱含的靜態方法,我同意這個說法。  
 
舉一個例子:  
class  Base  
{  
   public  static  void  someMethod()  
   {  
       System.out.println("in  static  method  of  Base");  
   }  
 
}  
 
class  Derived  extends  Base  
{  
   public  static  void  someMethod()  
   {  
       System.out.println("in  static  method  of  Derived");  
   }  
 
}  
 
class  Client  
{  
       public  static  void  main(String[]  args)  
       {  
           Derived.someMethod();  
 
           Derived  d  =  new  Derived();  
           d.someMethod();  
 
           Base  o  =  new  Derived();  
           o.someMethod();  
 
       }  
 
}  
 
執行時會列印出  
in  static  method  of  Derived  
 
in  static  method  of  Derived  
 
in  static  method  of  Base  
 
顯然,到底執行哪一個靜態方法,是由變數的明顯類型決定的,而不是由對象的真實類型決定。這不是多態性的。  
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.