一、源碼:其中部分註釋是測試過程中添加的
class SuperClass{
private int n;
/*
SuperClass(){
System.out.println("SuperClass()");
}
*/
SuperClass(int n){
System.out.println("SuperClass("+n+")");
this.n = n;
}
}
class SubClass extends SuperClass{
private int n;
SubClass(int n){
//super(300);
System.out.println("SubClass("+n+")");
this.n = n;
}
SubClass(){
super(300);
System.out.println("SubClass()");
}
}
public class TestSuperSub{
public static void main(String[] args){
// SubClass sc1 = new SubClass();
SubClass sc2 = new SubClass(400);
}
}
二、測試的幾種情況:有些沒有寫結論,希望相互交流
/*
--前提:在父類和子類中分別含有無參構造函數和有參構造函數
1.在主函數中定義一個子類變量(無參),執行子類中的無參構造函數之前先執行父類的構造函數
a.子類中沒有寫調用父類的構造函數,則默認調用父類中的無參構造函數。
b.子類中調用父類的無參構造函數,則執行父類中的無參構造函數。
c.子類中調用父類的有參構造函數,則執行父類中的有參構造函數。
2.在主函數中定義一個子類變量(有參),執行子類中的有參構造函數之前先執行父類的構造函數
a.子類中沒有寫調用父類的構造函數,則默認調用父類中的無參構造函數。
b.子類中調用父類的無參構造函數,則執行父類中的無參構造函數。
c.子類中調用父類的有參構造函數,則執行父類中的有參構造函數。
--結論:上述編譯成功
--前提:在子類中含有無參構造函數和有參構造函數,在父類中只含有有參構造函數
1.在主函數中定義一個子類變量(無參),執行子類中的無參構造函數之前先執行父類的構造函數
a.子類中沒有寫調用父類的有參構造函數
--------------------------------------------------------------------------------------
G:\0_2012相關資料\8_JAVA\1_Project>javac TestSuperSub.java
TestSuperSub.java:16: 錯誤: 無法將類 SuperClass中的構造器 SuperClass應用到給定類
型;
SubClass(int n){
^
需要: int
找到: 沒有參數
原因: 實際參數列表和形式參數列表長度不同
TestSuperSub.java:22: 錯誤: 無法將類 SuperClass中的構造器 SuperClass應用到給定類
型;
SubClass(){
^
需要: int
找到: 沒有參數
原因: 實際參數列表和形式參數列表長度不同
2 個錯誤
=========================================================================================
b.子類中調用父類的有參構造函數
-------------------------------------------------------------------------------------
G:\0_2012相關資料\8_JAVA\1_Project>javac TestSuperSub.java
TestSuperSub.java:16: 錯誤: 無法將類 SuperClass中的構造器 SuperClass應用到給定類
型;
SubClass(int n){
^
需要: int
找到: 沒有參數
原因: 實際參數列表和形式參數列表長度不同
1 個錯誤
=========================================================================================
2.在主函數中定義一個子類變量(有參),執行子類中的有參構造函數之前先執行父類的有參構造函數
a.子類中沒有寫調用父類的有參構造函數
--------------------------------------------------------------------------------------
G:\0_2012相關資料\8_JAVA\1_Project>javac TestSuperSub.java
TestSuperSub.java:16: 錯誤: 無法將類 SuperClass中的構造器 SuperClass應用到給定類
型;
SubClass(int n){
^
需要: int
找到: 沒有參數
原因: 實際參數列表和形式參數列表長度不同
1 個錯誤
=========================================================================================
b.子類中調用父類的有參構造函數
-------------------------------------------------------------------------------------
--編譯成功
*/
子類和父類之間繼承中構造函數的調用(二)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
Java项目面试实操 提升大厂面试成功率
wy53780
2020-04-23 14:14:04
玩转算法系列--图论精讲 面试升职必备(Java版)
wy53780
2020-04-23 14:03:23
玩转Java并发工具,精通JUC,成为并发多面手
wy53780
2020-04-23 13:56:08
线程八大核心+Java并发底层原理精讲(Java并发核心知识体系精讲)
wy53780
2020-04-23 13:55:55
Java通用型支付+电商平台双系统实战
wy53780
2020-04-23 13:54:42
【躍遷之路】【734天】程序員高效學習方法論探索系列(實驗階段491-2019.2.24)
Wall_Breaker
2019-02-24 23:25:10
Java是怎麼運行的?
勤思
2019-02-24 22:52:36
sql語法、關係建模
死瘦宅
2019-02-24 22:35:22
MySQL 事務、函數、觸發器、數據庫備份、權限管理
死瘦宅
2019-02-24 22:35:12
Python與家國天下
豌豆花下貓
2019-02-24 22:22:40
Java面試 | 002
Java貓說
2019-02-24 21:05:12
《從0到1學習Flink》—— Flink 讀取 Kafka 數據批量寫入到 MySQL
zhisheng
2019-02-24 21:04:11
Redis | 001能做什麼?
Java貓說
2019-02-24 21:03:51
java中具有繼承關係的類及其對象初始化順序
Linus脫襪子
2019-02-24 19:55:05