# 類的繼承
繼承是面向對象的三大特性之一,也是實現軟件復用的重要手段。
Java中是單繼承,每個子類只有一個直接父類。有的時候把父類也成為基類或者超類。
## 繼承的特點
> 父類和子類是一種一般和特殊的關系。例如水果和蘋果,蘋果是一種特殊的水果。
在Java中定義子類繼承父類的語法為
~~~
[修飾符] class SubClass extends SuperClass {
// 類定義部分
}
~~~
extends字面解釋為擴展,其實就是子類除了擁有父類所有的成員變量和方法之外,還具備自己的特殊屬性。
> 在子類中是不能訪問父類中定義的private相關的成員變量和方法的,這點也完全符合private的使用方式。
## 重寫父類的方法
在子類中包含與父類同方法簽名的現象稱為「方法重寫(Override)」,有時也稱為方法覆蓋。我們可以說子類重寫了父類的方法,也可以說子類覆蓋了父類的方法。
> 返回值和訪問控制修飾符可以不一樣,但是要符合“兩同兩小一大原則”
> 作為兩同就是方法名和方法的參數列表相同
> 兩小:子類的返回值類型和拋出的異常類要比父類的返回值類型和拋出的異常類更小或者相等。這里說的返回值類型小值得的是子類和父類的關系。
> 一大:子類的訪問權限要比父類的訪問權限要大或者相等
## super限定
super的使用和this的使用很相似。
如果需要在子類中調用父類被覆蓋的方法,可以使用super關鍵字。
同樣也可以通過super.fun()調用沒有被覆蓋的方法,但是這樣寫沒有什么特別的意義,因為本身在子類中就可以直接調用,無需使用super關鍵字。
## 關于繼承的幾點說明
子類能夠繼承父類的信息包括:
* 沒有使用private修飾符修飾的成員變量和方法,子類都能夠繼承
* 子類重寫了父類的方法,則父類的方法會被隱藏,隱藏的方法或者成員變量可以通過super關鍵字進行訪問
* 引入super關鍵字的原因是可以訪問被隱藏的成員變量和屬性,而且super只能在子類的方法定義中使用。
## 調用父類的構造器
> 在子類的構造器中,無論如何在第一行語句中都會調用一次父類的構造器。
如果沒有顯式的調用,那么會調用父類的沒有參數的構造器,如果父類沒有定義空參數的構造器,則此時會無法編譯。
對象創建的過程就是調用對象類的構造器的過程,一個構造器最基本的組成
~~~
[修飾符] 類名 {
super(...); 調用父類的構造器,如果沒有會調用父類的無參構造器
}
~~~
super()必須出現在第一行,而且只能有一個。
this和super在同一構造器中只可能出現一次。
子類構造器調用父類構造器可能出現的情況有
* 子類構造器執行體的第一行顯式的使用super調用父類的構造器,此時系統將根據super(params)調用對應的構造器。
* 子類構造器執行提的第一行顯式的使用this調用重載的構造器,系統將根據this(params)調用對應的重載構造器,本類中的對應的構造器在去調用父類的構造器。
* 子類構造器中既沒有super又沒有this,子類在執行構造器語句前執行父類的無參構造器。
* 無論如何子類都會調用一次父類的構造器。
> 在實際的開發過程中,我們一般都會保證在一個類中有一個無參的構造器的存在。因為如果在其類的子類中沒有定義構造器,或者定義了構造器沒有顯式的去調用父類的構造器,子類也能被成功的編譯。
- 前言
- 計算機概論
- 數據庫
- 數據庫介紹
- MySQL的安裝
- SQL
- 表基本操作
- 修改數據語句
- 數據檢索操作
- 多表數據操作
- 表結構設計
- 綜合應用
- JAVA
- JAVA 介紹
- JAVA 運行原理
- JDK 配置
- 類和對象
- 數據類型
- 變量
- 直接量
- 運算符
- 流程控制
- 數組結構
- 面向對象
- 隱藏和封裝
- 深入構造器
- 類的繼承
- 多態
- 包裝類
- final 修飾符
- 抽象類
- 接口
- 集合框架
- 常用類學習
- 異常處理
- 設計模式-單例模式
- JDBC
- JSP&Servlet
- Web應用
- Tomcat
- JSP
- Scriptlet
- Page 指令
- 包含指令
- 跳轉指令
- 用戶注冊實例
- JSP練習
- 內置對象
- Servlet
- 過濾器
- Web分層思想
- EL表達式
- JSTL
- 分頁實現
- AJAX&JSON
- 開發步驟
- 路徑問題
- Log4j
- 電子書城
- 案例分析
- 核心代碼
- Java 高級
- 文件操作
- 泛型
- 類加載機制和反射
- 注解 Annotation
- Mybatis框架
- 框架介紹
- Mybatis簡單實現
- 表基本操作
- 優化配置文件
- 表字段名與實體類屬性名不同的解決方案
- 一對一關聯
- 一對多關聯
- 教學管理
- 學員名錄
- 周測統計
- 2017-10-27
- 2017-11-03
- 2017-11-10
- 2017-11-17
- 課堂作業
- 班會紀要
- 2017-10-24
- 缺勤記錄
- 班級備忘錄
- 違紀統計
- 編程素養
- Day001
- Day002
- Day003
- Day004
- Day005
- Day006
- Day007
- Day008
- Day009
- Day010
- Day011
- Day012
- Day013
- Day014
- Day015
- Day016
- Day017
- Day018
- Day019