子類是由繼承得到的類,被繼承的類就是父類,子類與父類是"is-a"關係。 一、子類與父類 1. 子類 (1)子類定義 class 子類名 extends 父類名 {...} (2)子類繼承性 子類繼承了父類的所有屬性和除了構造方法的其餘方法。 子類與父類在同個包中:子類繼承父類除了private成員 ...
子類是由繼承得到的類,被繼承的類就是父類,子類與父類是"is-a"關係。
一、子類與父類
1. 子類
(1)子類定義
class 子類名 extends 父類名 {...}
(2)子類繼承性
子類繼承了父類的所有屬性和除了構造方法的其餘方法。
- 子類與父類在同個包中:子類繼承父類除了private成員
- 子類與父類在不同包中:子類繼承父類除了private、友好成員
- protected成員:若子類與祖先類同包,子類可訪問
2. 父類
所有類的祖先類是Object類(java.lang.Object)。
3. 子類與父類
父類可有0或多個子類,子類只能有一個父類。
obj instanceof Class; // 若obj是Class的子類, 返回True, 否則返回False
二、子類
1. 隱藏屬性
當子類中新聲明的變數與父類的成員變數同名時,子類中繼承的變數被隱藏,若想使用,可通過繼承的方法調用。
2. 隱藏方法——方法重寫
當子類中新聲明的方法與父類的方法同名時,為方法重寫,表示實現與父類不同的行為,但方法名相同。
方法重寫時,方法名、返回值類型、參數列表都必須相同,訪問許可權可升不可降,並且重寫的方法不能操作隱藏的成員。
三、子類與子類對象
子類對象的用法與普通類的對象相同。
子類對象不能操作隱藏的成員,可通過繼承的方法訪問。
四、父類與子類對象
1. 上轉型對象
由父類People擴展的子類Chinese,將子類創建的對象Lina的引用值賦給父類創建的對象person,person即為對象的上轉型對象。
class People {...} class Chinese extends People {...} class E { public static void main(String args[]) { Chinese Lina = new Chinese(); People person = Lina; // People person = new Chinese(); // 以上兩句類似此句 } }
在上面代碼的基礎上,以下一語句是錯誤的。因為可以說Chinses類是People類,但不能說People類是Chinses類(如老虎是動物[✔],動物是老虎[✘])。
Chinese Lisa = new People(); // 此句錯誤
2. 上轉型對象的規則
(1)上轉型對象不存在子類新增的變數或方法,只有繼承的、隱藏的變數和繼承的、重寫的方法。
(2)若子類重寫了方法,則上轉型對象調用的是重寫的方法。
(3)當子類重寫的方法是靜態方法時,上轉型對象調用的是父類的靜態方法。
(4)可將上轉型對象強制轉化為子類對象,此時該對象具備子類新增的屬性和行為。