- Java面向對象軟件開發
- 姚駿屏 汪衛星主編
- 594字
- 2018-12-29 19:04:17
2.2.5 派生類的初始化
如果有一個名為B的子類和一個名為A的父類,構造B對象時,A的構造方法是否要執行?如果要執行,A的構造方法在B之前還是之后執行?答案是在一個類層次中,如果構造子類對象,必先調用父類構造方法;構造方法按派生順序,即從父類到子類的順序被調用。
【例2-8】 下面的程序展示了何時執行構造方法:
//父類A class A { public A() { System.out.println("執行父類A的構造方法"); } } // 子類B,繼承于父類A class B extends A { public B() { System.out.println("執行子類B的構造方法"); } } public class Test { public static void main(String[] args) { B a = new B(); } }
該程序的運行結果如下:
執行父類A的構造方法 執行子類B的構造方法
可以看出,構建子類對象的時候將先調用父類的構造方法。
在創建派生類的對象時,使用派生類的構造方法對其初始化,不但要對自身的成員變量賦初值,還要對父類的成員變量賦初值。因為成員變量賦初值通常在構造方法中完成,因此在Java語言中,允許派生類繼承父類的構造方法。構造方法的繼承遵循如下的原則:
(1)若父類是無參數的構造方法,則子類無條件地繼承該構造方法。
(2)若子類無自己的構造方法,則它將繼承父類的無參構造方法作為自己的構造方法。
(3)若子類有自己的構造方法,則在創建子類對象時,它將先執行繼承自父類的無參構造方法,然后再執行自己的構造方法。如【例2-8】所示。
(4)若父類是有參數的構造方法,子類可以通過在自己的構造方法中使用super關鍵字來調用它,但這個調用語句必須是子類構造方法的第一個可執行語句。
推薦閱讀
- 案例式C語言程序設計
- 程序員面試算法寶典
- jQuery EasyUI網站開發實戰
- Java程序設計與實踐教程(第2版)
- 機械工程師Python編程:入門、實戰與進階
- 響應式架構:消息模式Actor實現與Scala、Akka應用集成
- 21天學通C++(第5版)
- Swift語言實戰晉級
- AV1視頻編解碼標準:原理與算法實現
- 從Excel到Python數據分析:Pandas、xlwings、openpyxl、Matplotlib的交互與應用
- RESTful Web Clients:基于超媒體的可復用客戶端
- 深入實踐DDD:以DSL驅動復雜軟件開發
- Web前端開發技術:HTML、CSS、JavaScript
- Python Social Media Analytics
- INSTANT Premium Drupal Themes