java中构造方法重载和继承

本文介绍Java中如何在一个构造方法内部调用同一类中的另一个构造方法,以及子类如何调用父类的构造方法。通过具体示例展示了this和super关键字的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. java中同一个类同的构造方法怎么调用另一个构造方法呢?

    如果一个类中有多个构造方法,在一个构造方法中想要调用另一个构造方法,需要用到this(参数)这样的方式,且这行语句必须写在构造方法的第一行。

public class B {
    public B() {
        /**
         * 这里的this(字符串)就是调用符合参数要求的构造方法
         * 这个this(字符串)语句只能写在这个构造方法的第一行
         * 否则会造成编译错误。
         */
        this("调用带参数的构造方法");
        System.out.println("这是一个不带参数的构造方法");
    }

    public B(String s) {
        System.out.println("这是一个带参数的构造方法");
    }
    public static void main(String[] args) {
        B b = new B();
    }

}

输出结果为:

这是一个带参数的构造方法
这是一个不带参数的构造方法
  1. java中的继承
    java中子类继承父类,在创建子类的对象时,其实默认是先调用父类的无参数的构造方法,创建父类对象,然后再创建子类对象,子类对象和父类对象时是挨着存放的,因此,子类对象可以使用父类的方法和全局变量。
class Parent{
    public Parent() {
        System.out.println("调用了父类的无参数构造方法");
    }
    public Parent(String inforamtion) {
        System.out.println("调用了父类有参数的构造方法");
    }

}
public class Child extends Parent  {
    public Child() {
        System.out.println("子类的无参数构造方法");
    }
    public static void main(String[] args){
        Child child = new Child();

    }

}

其输出结果为

调用了父类的无参数构造方法
子类的无参数构造方法

现在我们把父类中无参数的构造方法注释掉,再次调用可以发现出现了编译错误。因为子类会默认调用父类的无参数的构造方法来生成父类对象,而我们把父类中的无参数构造方法注释掉后,子类就找不到了,因此出错。我们可以为子类指定父类中带参数的构造方法。

class Parent{
    /*public Parent() {
        System.out.println("调用了父类的无参数构造方法");
    }*/
    public Parent(String inforamtion) {
        System.out.println("调用了父类有参数的构造方法");
    }

}
public class Child extends Parent  {
    public Child() {
        /**
         * super(参数)这句是调用父类的有参数的构造方法,其中super必须写在第一行
         * 否则出错,因为是先生成父类对象,再生成子类对象。在这里的super表示的是父类的
         * 应用。
         */
        super("调用父类中有参数的构造器,且参数类型为字符串");
        System.out.println("子类的无参数构造方法");
    }
    public static void main(String[] args){
        Child child = new Child();

    }

}

输出结果为:

调用了父类有参数的构造方法
子类的无参数构造方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值