服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - java Person,Student,GoodStudent 三个类的继承、构造函数的执行

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

2020-08-16 15:10Java教程网 Java教程

这篇文章主要介绍了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); 来确认对哪个父类构造函数的调用

代码:

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

延伸 · 阅读

精彩推荐