1. 程式人生 > >Java基礎(二)重寫、繼承(函式,建構函式、變數的繼承過程)、抽象。

Java基礎(二)重寫、繼承(函式,建構函式、變數的繼承過程)、抽象。

Java不支援多繼承,因為容易帶來安全隱患,當多個父類中定義了相同功能,但功能內容不同時,子類物件不確定要執行哪一          個。

繼承是底層不斷向上抽取共性而來的。在具體呼叫時,要建立最子類的物件(更多的功能,包括共有的和特有的)。

載入子類檔案時候,先載入父.class,再載入子.class

類中成員:一、函式,二、變數,三、建構函式。

重寫(覆蓋):子類和父類有一模一樣的函式時,當子類物件呼叫函式時,會執行子類函式內容,如同父類函式被覆蓋一樣。子類         覆蓋父類,必須保證子類許可權大於等於父類許可權,否則編譯失敗。靜態只能覆蓋靜態。

加final關鍵字限制重寫。

建構函式沒有覆蓋。

子類建構函式第一行有一條隱式的super();語句,會訪問父類中空引數的建構函式,而且子類中所有的建構函式預設第一行都是super()建構函式裡面要麼有this()要麼有super()

父類的資料子類可以直接獲取子類物件在建立時,需要檢視父類是如何對這些資料初始化的。

子類在物件初始化時,要先訪問父類中的建構函式

子類的所有建構函式,預設都會訪問父類中空引數的建構函式。因為子類每一個建構函式內的第一行都有一句隱式super()。

父類中沒有空引數的建構函式時,子類必須手動通過super或者this語句形式來指定要訪問的建構函式

子類建構函式第一行也可以手動指定this語句來訪問本類中的建構函式,子類中至少會有一個建構函式會訪問父類中的建構函式

如果要訪問父類中指定的建構函式,可以通過手動定義super語句的方式指定。

例:class zi extends Fu {

     zi(){

          super();    //預設方式。

          super(4);  //手動指定方式。

}

}

子類一旦例項化就會走父類。

子類調動父類函式時,呼叫建構函式super(),呼叫一般函式super. 。

————————————————————————————————————————————————————————

抽象方法一定存放在抽象類中,抽象類不可以建立物件(抽象類不可以例項化),因為呼叫抽象方法沒有意義。

抽象類中的抽象方法要被使用,必須由子類複寫其所有抽象方法後,建立子類物件呼叫(如果子類只覆蓋了部分抽象方法那麼該子類還是一個抽象類)。 

抽象可以強迫子類去重寫抽象方法。

抽象函式也是一類事物當中應該具備的功能,只不過功能主體(這類事物的)具體子類實現方式不一樣。