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 [email protected] */ 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! -------------------------------