《Java核心技術》第五章 繼承 學習筆記
第5章 繼承
本章將學習物件導向程式設計的另外一個基本概念:繼承(inheritance)。
利用繼承,人們可以基於已存在的類構造一個新類。繼承已存在的類就是複用(繼承)這些類的方法和域。在此基礎上,還可以新增一些新的方法和域,以滿足新的需求。這是Java程式設計中的一項核心技術。
另外,本章還闡述了反射(reflection)的概念。反射是指在程式執行期間發現更多的類及其屬性的能力。這是一個功能強大的特性,使用起來也比較複雜。
5.1 類、超類和子類
5.1.1 定義子類
下面是由繼承Employee類來定義Manager類的格式,關鍵字extends表示繼承。
public class Manager extends Employee {
// 新增方法和域
}
關鍵字extends表明正在構造的新類派生於一個已存在的類。已存在的類稱為超類(superclass)、基類(base class)或父類(parent class);新類稱為子類(subclass)、派生類(derived class)或孩子類(child class)。
儘管Employee類是一個超類,但並不是因為它優於子類或者擁有比子類更多的功能。實際上恰恰相反,子類比超類擁有的功能更加豐富。
public class Manager extends Employee {
private double bonus;
public void setBonus(double bonus)
{
this.bonus = bonus;
}
}
當然,由於setBonus方法不是在Employee類中定義的,所以屬於Employee類的物件不能使用它。
然而,儘管在Manager類中沒有顯式地定義getName和getHireDay等方法,但屬於Manager類的物件卻可以使用它們,這是因為Manager類自動地繼承了超類Employee中的這些方法。
同樣,從超類中還繼承了name、salary和hireDay這3個域。這樣一來,每個Manager類物件就包含了4個域:name、salary、hireDay和bonus。
在通過擴充套件超類定義子類的時候,僅需要指出子類與超類的不同之處。因此在設計類的時候,應該將通用的方法放在超類中,而將具有特殊用途的方法放在子類中,這種將通用的功能放到超類的做法,在物件導向程式設計中十分普遍。
5.1.2 覆蓋方法
然而,超類中的有些方法對子類Manager並不一定適用。具體來說,Manager類中的getSalary方法應該返回薪水和獎金的總和。為此,需要提供一個新的方法來覆蓋(override)超類中的這個方法:
super是一個指示編譯器呼叫超類方法的特殊關鍵字。
@Override
public double getSalary() {
return super.getSalary() + bonus;
}
5.1.3 子類構造器
public Manager(String name, double salary, int year, int month, int day)
{
super(name, salary, year, month, day);
bonus = 0;
}
相關文章
- Java核心技術筆記 繼承Java筆記繼承
- java核心技術卷1 第五章:繼承Java繼承
- JAVA核心技術學習筆記--反射Java筆記反射
- Head First Java學習筆記(7):繼承與多型Java筆記繼承多型
- Solidity語言學習筆記————34、繼承Solid筆記繼承
- C++學習筆記——C++ 繼承C++筆記繼承
- java核心技術閱讀筆記Java筆記
- JavaScript 型別、原型與繼承學習筆記JavaScript型別原型繼承筆記
- 《Java核心技術 卷I》學習筆記10:使用預定義類Java筆記
- java核心技術筆記--執行緒Java筆記執行緒
- Java核心技術學習筆記——進階——第五章 Java多執行緒和併發程式設計——5.5 Java併發框架ExecutorJava筆記執行緒程式設計框架
- Java核心技術學習筆記——進階——第五章 Java多執行緒和併發程式設計——5.2 Java多執行緒實現Java筆記執行緒程式設計
- Java繼承練習Java繼承
- Java核心技術第五章——2.Object類JavaObject
- java學習——物件導向之繼承Java物件繼承
- PHP 手冊 (類與物件) 學習筆記七:物件繼承PHP物件筆記繼承
- 《Java核心技術 卷I》學習筆記2:資料型別、變數與常量Java筆記資料型別變數
- JAVA學習筆記—JAVA WEB(二)JAVA WEB核心(下)Java筆記Web
- 學習Java中遇到的繼承問題Java繼承
- Java核心技術筆記 異常、斷言和日誌Java筆記
- 《Java從入門到失業》第五章:繼承與多型(5.1-5.7):繼承Java繼承多型
- JVM核心學習筆記JVM筆記
- JavaScript 學習之繼承JavaScript繼承
- Java核心技術 卷1 基礎知識 部分筆記Java筆記
- Java學習day09—-封裝和繼承Java封裝繼承
- java核心技術卷1學習思維導圖Java
- LLM學習筆記-長度外推技術筆記
- Java程式設計思想學習筆記4 - 序列化技術Java程式設計筆記
- Android 學習筆記核心篇Android筆記
- Redis核心技術筆記07-08Redis筆記
- Redis核心技術筆記11-15Redis筆記
- Redis核心技術筆記01-02Redis筆記
- Redis核心技術筆記21-25Redis筆記
- Redis核心技術筆記05-06Redis筆記
- Redis核心技術筆記03-04Redis筆記
- Redis核心技術筆記16-20Redis筆記
- Go語言核心36講(Go語言進階技術四)--學習筆記Go筆記
- Go語言核心36講(Go語言進階技術三)--學習筆記Go筆記