Java构造函数的相互调用代码示例

yizhihongxing

Java构造函数的相互调用,是指一个构造函数中调用了另一个构造函数,以达到代码复用和降低代码重复度的目的。在Java中,构造函数相互调用有两种方式:this和super。

使用this关键字调用另一个构造函数

使用this关键字调用另一个构造函数时,需要满足两个条件:

  1. this关键字必须位于构造方法中的第一行;
  2. 被调用的构造方法必须在当前构造方法之前定义。

下面是一个使用this调用另一个构造函数的示例代码:

public class Person {
    private String name;
    private int age;

    public Person() {
        this("Unknown", 0);
    }

    public Person(String name) {
        this(name, 0);
    }

    public Person(int age) {
        this("Unknown", age);
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public static void main(String[] args) {
        Person person1 = new Person();
        Person person2 = new Person("Tom");
        Person person3 = new Person(18);
        Person person4 = new Person("Tom", 18);
    }
}

解释一下上面的代码:

  • Person类有四个构造函数,分别是无参、带一个字符串参数name、带一个整数参数age、带一个字符串参数name和一个整数参数age的构造函数;
  • 无参构造函数调用带两个参数的构造函数,并传入默认值,即"Unknown"和0;
  • 带一个字符串参数name的构造函数调用带两个参数的构造函数,并把age默认值设置为0;
  • 带一个整数参数age的构造函数调用带两个参数的构造函数,并把name默认值设置为"Unknown";
  • 带一个字符串参数name和一个整数参数age的构造函数直接初始化name和age。

这个示例代码的输出结果为:

Unknown 0
Tom 0
Unknown 18
Tom 18

使用super关键字调用父类构造函数

使用super关键字调用父类构造函数时,需要满足以下条件:

  1. super关键字必须位于构造方法的第一行;
  2. 被调用的父类构造方法必须存在,并且参数列表必须与当前构造方法的参数列表相同或可以隐式转换。

下面是一个使用super调用父类构造函数的示例代码:

public class Student extends Person {
    private String school;

    public Student(String school) {
        super();
        this.school = school;
    }

    public Student(String name, int age, String school) {
        super(name, age);
        this.school = school;
    }

    public static void main(String[] args) {
        Student student1 = new Student("High School");
        Student student2 = new Student("Tom", 16, "High School");
    }
}

解释一下上面的代码:

  • Student类继承自Person类,具有相同的构造函数;
  • 无参构造函数调用父类构造函数,并用默认值初始化school;
  • 带三个参数的构造函数调用父类构造函数,并用相应参数初始化school。

这个示例代码的输出结果与前一个示例代码相同,不再赘述。

以上就是Java构造函数的相互调用的完整示例攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java构造函数的相互调用代码示例 - Python技术站

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

相关文章

  • Java获取随机数的3种方法

    Java获取随机数的3种方法 在Java中,生成随机数是非常常见的任务,对于一些涉及到密码、加密等的场景更是必要的。Java提供了多个生成随机数的方法,下面是Java获取随机数的3种方法的详细解释。 方法1:使用Math.random()生成随机数 Math.random()方法可以用于生成随机数。返回值是一个大于等于0.0且小于1.0的double类型的伪…

    Java 2023年5月26日
    00
  • Tomcat配置访问日志和线程数的实现步骤

    下面是 Tomcat 配置访问日志和线程数的实现步骤的完整攻略。 配置访问日志 步骤一:打开服务器.xml文件 在 Tomcat 安装目录下的 conf 目录中找到 server.xml 文件,编辑此文件。如果 Tomcat 正在运行,需要重启实例。 步骤二:在Engine或Host节点下添加AccessLogValve节点 在 host 或 engine …

    Java 2023年5月20日
    00
  • Struts2中Action三种接收参数形式与简单的表单验证功能

    在Struts2中,Action可以通过三种形式接收参数: 在Action类中定义属性,并提供setter方法,在Action的execute方法中使用属性接收参数。 使用ActionContext.getContext().getParameters()方法获取请求参数Map,以键值对的形式接收参数。 实现ParameterAware接口,可以通过参数Ma…

    Java 2023年5月20日
    00
  • 小程序实现带年月选取效果的日历

    下面是关于小程序实现带年月选取效果的日历的完整攻略: 一、实现思路 获取当前日期的年和月以及当月的天数; 使用数据渲染模板,并在相应的日期上添加样式; 实现滑动切换月份功能; 添加点击事件,实现从日历中选择日期并将该日期传递给父组件。 二、具体实现 下面我们将通过两个示例来说明具体实现步骤。 示例一 首先,我们需要在 wxml 文件中编写日历的结构,并通过 …

    Java 2023年5月23日
    00
  • Java日常练习题,每天进步一点点(41)

    首先我需要说明一下,题目“Java日常练习题,每天进步一点点(41)”是一系列的Java编程练习题。这些练习题旨在帮助Java初学者逐步掌握 Java 编程语言和面向对象的编程思想。 这一系列的练习题包含41道题目,每道题目都是一个小问题,每天完成一道,逐步提高自己的编程能力。 在攻略中,我将解释一下如何通过完成这道题目来练习Java编程,并提高自己的编程技…

    Java 2023年5月23日
    00
  • 在Tomcat中部署Web项目的操作方法(必看篇)

    在Tomcat中部署Web项目的操作方法(必看篇) 什么是Tomcat Tomcat是一个开源的、轻量级的Web容器,通常用于部署Java Web应用程序。 下载和安装Tomcat 1.访问Tomcat官网:http://tomcat.apache.org/2.进入下载页面:http://tomcat.apache.org/download-80.cgi3.…

    Java 2023年5月19日
    00
  • json显示日期带T问题的解决方法

    当我们使用JSON格式传输日期时,日期常常会带有T字符,例如:2019-09-30T10:30:00。这是因为该日期字符串遵循ISO 8601标准,用于表示日期和时间的格式化方式。但是,该格式不太友好,可能会给用户造成困扰。那么,接下来我将为大家详细讲解如何解决这个问题。 方法一:自定义JSON序列化器 我们可以自定义一个JSON序列化器,将日期格式化为自定…

    Java 2023年5月26日
    00
  • 鉴权认证+aop+注解+过滤feign请求的实例

    “鉴权认证+aop+注解+过滤feign请求”的实例攻略如下: 一、背景说明 随着Web应用系统的不断发展,安全问题越来越引人注目。其中,用户鉴权认证及授权是Web应用的基础。在实际项目中,基于Spring Boot微服务的架构是最常见的,如何在此架构中实现用户鉴权认证成为关键问题。 本文将介绍一种实现用户鉴权认证的方式,通过AOP和注解来实现统一鉴权验证,…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部