8.繼承

繼承

一、繼承的概念
1.繼承是使用已存在的類的定義作爲基礎建立新類的技術,新類的定義可以增加新的屬性或新的方法,也可以使用父類的屬性和方法。
2.繼承技術使得複用以前的代碼非常容易,能夠大大縮短開發週期,降低開發費用。

二、繼承的要點
1.可具有明確的類層次結構;
2.可以從父類中繼承屬性和方法,子類就不必去聲明那些公共的屬性和方法,除此之外子類還可添加自己的屬性和方法來滿足新需求;
3.父類的構造函數不能被子類繼承;
4.父類的屬性(字段)不能被子類重寫;
5.子類可從父類中繼承public、protected、默認(父子類同包時可以)訪問修飾符定義的屬性和方法,private訪問修飾符定義的屬性和方法不能繼承;

三、繼承的優點
1.代碼的可重用性;
2.父類的屬性和方法可用於子類;
3.設計應用程序變得更加靈活有彈性;
4.便於系統的可擴展性;

四、類定義的改進
在這裏插入圖片描述
五、super關鍵字的使用:
1.super()或super( [參數列表] ):調用父類的默認構造函數或帶參數的構造函數。
2.super.方法( [參數列表] ):調用父類的方法。
繼承案例:
在這裏插入圖片描述
六、繼承關係中父類哪些不可被子類繼承?

  1. 構造函數不可繼承;
  2. 父類的屬性可繼承,不可重寫(不可覆蓋);
  3. 靜態方法可繼承,不可重寫(不可覆蓋);
  4. final方法可繼承,不可重寫;

七、父子類成員的初始化過程
過程:父類的靜態初始化塊—>子類的靜態初始化—>父類的初始化塊—>父類的構造—>子類的初始化塊—>子類的構造

八、繼承中的類型轉換:(向上轉型也就是自動轉型,向下轉型也就是強制轉型)
1.在繼承樹中向上轉型(子類–>父類)總是安全的會自動發生。
2.在繼承樹中向下轉型(強類型轉換:父類–>子類)是不安全的。

Vehicles vehicle = new Car("奔馳","紅色",4); // vehicle實際上引用的是一個Car對象
		//強制類型轉換
		Car car = (Car)vehicle; //正確
		car.show();
		vehicle = new Bus("巴實","藍色",40); 
		//Car car2 = (Car)vehicle; //這裏的強制類型轉換錯誤,因爲vehicle實際引用的是一個Bus
		Bus bus = (Bus)vehicle;
		vehicle.show();

九、instanceof (實例測試運算符) 在類型轉換中的作用:
1.Instanceof關鍵字用測試一個對象是否是某類的一個實例,或者實現了某個接口。測試結果是一個布爾值。
2.在強制類型轉換之前通過instanceof運算符檢查對象的真實類型,可以避免類型轉換異常,從而提高代碼健壯性;

十、什麼時候使用繼承
當滿足“是一個(is a)”的關係時。子類應當可以替換父類並出現在父類能夠出現的任何地方[替換原則 (the Liskov Substitution Principle LSP) ]也就說任何使用父類的地方子類都可以使用。
注:設計模式的6大原則:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章