Java继承中的构造方法使用的理解,白话文,简单易理解

后来才发现,并不是所有的喜欢都会有结果,终究要明白,遇见就已经很难得,你让我觉得,我们的关系,不止这样,又只能这样。

在这里插入图片描述

关于继承中的构造方法的执行顺序是怎么样的?

首先创建子父类,创建测试类

//父类
public class Fu {
}
//子类
public class Zi extends Fu{

}
//测试类
public class TestA {
}

在父类中创建有参构造和无参构造

//父类
public class Fu {

    public Fu(){
        System.out.println("父类无参");
    }
    public Fu(int i ){
        System.out.println("父类有参");
    }
    
}

在子类中创建有参构造和无参构造

//子类
public class Zi extends Fu{
    public Zi(){
        System.out.println("子类无参");
    }
    public Zi(int age){
        System.out.println("子类有参");
    }
}

当我们在测试里面new了子类的对象,发现无法调用父类中的构造方法
在这里插入图片描述

构造方法无法被继承

但是当我们只写了调用子类的无参方法,编译就会不一样:
在这里插入图片描述在这里插入图片描述我们会发现,我们只是调用了子类的无参,但是父类的无参也输出了,这是因为在子类的构造方法内,有一个隐藏的super();,我们之前用supre调用的时父类属性,而super()调用的父类的构造方法
在这里插入图片描述这个是系统默认调用的,当我们调用子类的无参构造的时候,他会执行第一个语句,也就是supper(),于是就会去执行父类的无参方法输出父类无参之后,程序继续让下执行,输出子类无参

我们的子类构造方法是有参的,那么我们在测试类上加入参数
在这里插入图片描述在这里插入图片描述
在子类的有参内,同样还是有一个super(),同样回调取到父类无参,那怎么获取父类的有参呢?其实我们只需要在子类的构造方法内,在super()的括号内写入参数就可以了
在这里插入图片描述我们在一个构造方法内写入super(),那么系统就不会使用它默认的super()了,使用我们写的这个来运行
运行:
在这里插入图片描述
总结:

  • 构造方法无法被继承、但可以通过其他方法调用
  • 构造方法下有一个默认调用父类的无参构造,super()
  • 如果手动添加super,那么系统就会运行我们手动添加的这个
  • super必须使用在第一行
  • 我们使用this在构造方法内调取成员变量,也必须要放第一行,所以就跟super冲突了,所以this和super在一个构造中,不能同时使用

来张心灵净化图,缓解身心疲劳:

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DNCS高级工程师

你的创作是我打赏的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值