首页 > 开发 > Java > 正文

java Person,Student,GoodStudent 三个类的继承、构造函数的执行

2024-07-13 10:04:26
字体:
来源:转载
供稿:网友

有这样三个类,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 Personfrom GoodStudent!I'm GoodStudent!-------------------------------

 

 

注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表