天天看點

後浪拍前浪-覆寫父類方法 | 帶你學《Java面向對象程式設計》之三十九

上一篇:方圓之内-繼承相關限制 | 帶你學《Java面向對象程式設計》之三十八

【本節内容】

通過閱讀本節内容,你将了解到在繼承父類時涉及到的新概念-覆寫,并對其有一個較為全面的認識,學會如何實作覆寫以達到某些實際需求。

子類與父類一旦産生了繼承關系之後,實際上子類會繼承父類中的全部定義,但是這裡面也有可能出現不合适的場景。

子類如果發現父類中設計不足并且需要保留有父類中的方法或者屬性名稱的情況下就會發生覆寫。

方法的覆寫

當子類定義了與父類方法名稱相同,參數類型及個數完全相同(跟父類方法一模一樣)的時候,就稱為方法的覆寫。

範例:觀察方法覆寫

class Channel {
   public void connect() {
       System.out.println(“【Channel父類】進行資源的連接配接。”) ;
   }
}
class DatabaseChannel extends Channel {   //要進行資料庫的連接配接
   public void connect() {   //保留已有的方法名稱,而後進行覆寫
       System.out.println(“【子類】進行資料庫資源的連接配接。”) ;
   }
}
public class JavaDemo{
   public static void main(String args[]) {
       DatabaseChannel channel = new DatabaseChannel () ;
       channel.connect() ;
   }         
}           

執行結果:【子類】進行資料庫資源的連接配接。

由于現在執行個體化的是子類(DatabaseChannel)對象,是以此時調用的方法一定是被子類所覆寫過的方法,如果該方法沒有被覆寫過,那麼将調用父類中提供的方法,覆寫的意義是在于:優化父類的功能。

後浪拍前浪-覆寫父類方法 | 帶你學《Java面向對象程式設計》之三十九

圖一 人與職業的關系圖

在子類進行方法覆寫之後,如果現在要想繼續調用父類中的方法,那麼就必須使用“super.方法()”。

class Channel {
   public void connect() {
       System.out.println(“【Channel父類】進行資源的連接配接。”) ;
   }
}
class DatabaseChannel extends Channel {   //要進行資料庫的連接配接
   public void connect() {   //保留已有的方法名稱,而後進行覆寫
       super.connect() ;      //直接調用父類中的方法
       System.out.println(“【子類】進行資料庫資源的連接配接。”) ;
   }
}
public class JavaDemo{
   public static void main(String args[]) {
       DatabaseChannel channel = new DatabaseChannel () ;
       channel.connect() ;
   }         
}           

執行結果:

【Channel父類】進行資源的連接配接。

【子類】進行資料庫資源的連接配接。

隻要是在子類中調用父類方法的時候一定要在方法前追加有“super.方法()”。

想學習更多的Java的課程嗎?從小白到大神,從入門到精通,更多精彩不容錯過!免費為您提供更多的學習資源。

本内容視訊來源于

阿裡雲大學 下一篇:規則之間-方法覆寫限制 | 帶你學《Java面向對象程式設計》之四十 更多Java面向對象程式設計文章檢視此處