服务器之家

服务器之家 > 正文

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

时间:2020-08-16 15:10     来源/作者:Java教程网

有这样三个类,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); 来确认对哪个父类构造函数的调用

代码:

java" id="highlighter_817565">
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
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!");
    }
 
}

打印构造函数的调用过程:

?
1
2
3
4
5
6
7
8
9
10
have arg!
I'm Student!
-------------------------------
have arg!
I'm Student!
-------------------------------
have arg!in Person
from GoodStudent!
I'm GoodStudent!
-------------------------------

相关文章

热门资讯

2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
歪歪漫画vip账号共享2020_yy漫画免费账号密码共享
歪歪漫画vip账号共享2020_yy漫画免费账号密码共享 2020-04-07
Intellij idea2020永久破解,亲测可用!!!
Intellij idea2020永久破解,亲测可用!!! 2020-07-29
男生常说24816是什么意思?女生说13579是什么意思?
男生常说24816是什么意思?女生说13579是什么意思? 2019-09-17
沙雕群名称大全2019精选 今年最火的微信群名沙雕有创意
沙雕群名称大全2019精选 今年最火的微信群名沙雕有创意 2019-07-07
返回顶部