程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> java Person,Student,GoodStudent 三個類的繼承、構造函數的執行

java Person,Student,GoodStudent 三個類的繼承、構造函數的執行

編輯:關於JAVA

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!
-------------------------------

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved