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

yizhihongxing

三个类的继承关系如下:

Person
  |
Student
  |
GoodStudent

其中,Person是父类,Student是子类,GoodStudent是Student的子类。即Student继承了Person类,GoodStudent继承了Student类。

在Java中,子类的构造函数中会默认调用父类的空参构造函数。若父类没有空参构造函数,则需要在子类的构造函数中手动调用父类的有参构造函数。还可以使用super关键字来调用父类的构造函数。

例如,Person类和Student类定义如下:

public class Person {
    private String name;

    public Person() {
        System.out.println("Person的无参构造函数被调用了");
    }

    public Person(String name) {
        System.out.println("Person的有参构造函数被调用了");
        this.name = name;
    }
}

public class Student extends Person {
    private int grade;

    public Student(int grade) {
        System.out.println("Student的无参构造函数被调用了");
        this.grade = grade;
    }

    public Student(String name, int grade) {
        super(name); // 调用父类的有参构造函数
        System.out.println("Student的有参构造函数被调用了");
        this.grade = grade;
    }
}

在这个例子中,Person有空参构造函数和有参构造函数,但是Student只有有参构造函数,没有空参构造函数。当创建Student对象时,由于Student没有定义空参构造函数,Java编译器会默认调用父类Person的空参构造函数。

接下来,我们可以用以下代码创建一个Student对象:

Student student1 = new Student(90);

执行以上代码后,输出结果为:

Person的无参构造函数被调用了
Student的无参构造函数被调用了

由此可见,当创建Student对象时,会先调用Person的无参构造函数,然后调用Student的无参构造函数。

接下来,我们再创建一个Student对象:

Student student2 = new Student("小红", 80);

执行以上代码后,输出结果为:

Person的有参构造函数被调用了
Student的有参构造函数被调用了

由此可见,当创建Student对象时,会先调用Person的有参构造函数,然后调用Student的有参构造函数。在Student的有参构造函数中,使用super关键字调用了父类Person的有参构造函数。

使用相同的方法,我们可以创建GoodStudent:

public class GoodStudent extends Student {
    private String praise;

    public GoodStudent(String praise) {
        System.out.println("GoodStudent的无参构造函数被调用了");
        this.praise = praise;
    }

    public GoodStudent(String name, int grade, String praise) {
        super(name, grade); // 调用父类Student的有参构造函数
        System.out.println("GoodStudent的有参构造函数被调用了");
        this.praise = praise;
    }
}

GoodStudent goodStudent = new GoodStudent("好样的");

执行以上代码后,输出结果为:

Person的无参构造函数被调用了
Student的无参构造函数被调用了
GoodStudent的无参构造函数被调用了

由此可见,创建GoodStudent对象时,会先调用Person的无参构造函数,然后调用Student的无参构造函数,最后调用GoodStudent的无参构造函数。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java Person,Student,GoodStudent 三个类的继承、构造函数的执行 - Python技术站

(0)
上一篇 2023年6月26日
下一篇 2023年6月26日

相关文章

  • ServerVariables集合检索预定的环境变量

    ServerVariables集合是ASP.NET中一个重要的内置变量集合,它包含所有可用的服务器端环境变量,包括用户信息、服务器信息、浏览器和客户端的信息等。我们可以通过检索ServerVariables集合中的键值对,获取一些预定义的环境变量。 检索 ServerVariables 集合预定环境变量的方法 以下是检索预定环境变量的步骤: 步骤 1 对于.…

    other 2023年6月27日
    00
  • win10系统安装mysql数据库后配置环境变量的图文教程

    下面是“win10系统安装mysql数据库后配置环境变量的图文教程”的完整攻略。 1. 下载MySQL 首先,我们需要从MySQL官方网站(https://dev.mysql.com/downloads/mysql/)下载MySQL Community Server。选择适合您操作系统的版本即可。 2. 安装MySQL 下载完毕后,双击安装程序并按照提示进行…

    other 2023年6月27日
    00
  • GUI程序原理分析

    GUI程序原理分析 Graphical User Interface,简称GUI,是指一种用户与计算机进行交互的方式,通常是采用图形化操作界面,用户通过鼠标点击、拖拽等方式与计算机进行交互。在现代计算机应用程序中,GUI已经成为了主流。 GUI程序的基本原理 GUI程序的基本原理是使用图形绘制库来进行图形化界面的绘制,通过用户的行为反馈(如鼠标点击、键盘输入…

    其他 2023年3月28日
    00
  • vbs搜索文件名或者得到目录列表

    要使用VBScript搜索文件名或者获取目录列表,可以按照以下步骤进行: 1.使用FileSystemObject创建文件系统对象 Set fso = CreateObject("Scripting.FileSystemObject") 2.搜索文件 Set objFolder = fso.GetFolder("C:\Users…

    other 2023年6月26日
    00
  • vue中各组件之间传递数据的方法示例

    Vue中各组件之间传递数据的方法示例 在Vue中,组件之间传递数据是非常常见的需求。下面将详细介绍几种常用的方法来实现组件之间的数据传递。 Props Props是Vue中最基本的组件之间传递数据的方法。通过在父组件中定义props属性,并将数据传递给子组件,子组件就可以通过props属性来接收并使用这些数据。 示例1:父组件向子组件传递数据 <tem…

    other 2023年8月21日
    00
  • 用电脑时我的系统总是重启为什么?

    针对“用电脑时我的系统总是重启”的问题,我们需要先了解可能导致系统重启的原因,再逐一排查解决。 可能导致系统重启的原因: 1.硬件问题:如电源故障、内存问题、硬盘问题等。 2.软件问题:如系统错误、病毒感染等。 3.过热:长时间使用、灰尘积聚等情况导致电脑过热,导致自动重启。 解决过程如下: 1.排查硬件问题 第一步,检查电源是否正常。可能存在电源老化或损坏…

    other 2023年6月26日
    00
  • h5新增的input类型

    以下是关于“H5新增的input类型”的完整攻略,包括新增的input类型介绍、示例说明等。 新增的input类型 HTML5中新增了一些input类型,用于更方便地处理表单。以下是一些常用的新增input类型: color:用于选择颜色的输入框。 date:用于选择日期的输入。 datetime-local:用于选择日期和时间的输入框。 email:用于输…

    other 2023年5月7日
    00
  • JS全局变量和局部变量最新解析

    JS全局变量和局部变量最新解析攻略 在JavaScript中,变量的作用域分为全局作用域和局部作用域。全局变量在整个程序中都可访问,而局部变量只在定义它们的函数内部可访问。本攻略将详细解释全局变量和局部变量的概念、作用域以及它们的最新解析。 全局变量 全局变量是在程序的顶层定义的变量,可以在整个程序中的任何地方访问。它们在全局作用域中声明,因此在任何函数内部…

    other 2023年7月29日
    00
合作推广
合作推广
分享本页
返回顶部