java Person,Student,GoodStudent 三個類的繼承、構造函數的執行。本站提示廣大學習愛好者:(java Person,Student,GoodStudent 三個類的繼承、構造函數的執行)文章只能為提供參考,不一定能成為您想要的結果。以下是java Person,Student,GoodStudent 三個類的繼承、構造函數的執行正文
有這樣三個類,Person,Student,GoodStudent。其中Student繼承了Person,GoodStudent繼承了Student,三個類中只有默認的構造函數,用什麼樣的方法證明在創建Student類的對象的時候是否調用了Person的構造函數,在創建GoodStudent類的對象的時候是否調用了Student構造函數?如果在創建Student對象的時候沒有調用Person的構造函數(我也不知道什麼情況下不會去調用,如果都是默認無參構造函數的話),那麼采用什麼樣的手段可以調用父類的構造函數?
一、需要分析
1、Person,Student,GoodStudent三個類的繼承關系
2、實現三個class的構造函數
3、打印信息查看各個類的構造函數是否被調用
二、技術點
1、弄清楚Java 類的無參構造函數是默認調用的
2、如果父類的構造函數是有參的,那麼要在子類的構造函數的第一行加入super(args); 來確認對哪個父類構造函數的調用
代碼:
package com.itheima;
/**
* 9、
* 有這樣三個類,Person,Student.GoodStudent。其中Student繼承了Person,GoodStudent繼承了Student,
* 三個類中只有默認的構造函數,用什麼樣的方法證明在創建Student類的對象的時候是否調用了Person的構造函數,
* 在創建GoodStudent類的對象的時候是否調用了Student構造函數?如果在創建Student對象的時候沒有調用Person的構造函數
* ,那麼采用什麼樣的手段可以調用父類的構造函數?
*
* @author 281167413@qq.com
*/
public class Test9 {
public static void main(String[] args) {
Student s1 = new Student();
System.out.println("-------------------------------");
Student s2 = new Student();
System.out.println("-------------------------------");
GoodStudent g1 = new GoodStudent();
System.out.println("-------------------------------");
}
}
class Person {
Person() {
System.out.println("I'm Person!");
}
Person(String arg) {
System.out.println(arg);
}
Person(String arg1, String arg2) {
System.out.println(arg1 + arg2);
}
}
class Student extends Person {
Student() {
super("have arg!"); //
System.out.println("I'm Student!");
}
Student(String arg) {
super("have arg!", "in Person");
System.out.println(arg);
}
}
class GoodStudent extends Student {
GoodStudent() {
super("from GoodStudent!");
System.out.println("I'm GoodStudent!");
}
}
打印構造函數的調用過程:
have arg! I'm Student! ------------------------------- have arg! I'm Student! ------------------------------- have arg!in Person from GoodStudent! I'm GoodStudent! -------------------------------