java学习之路笔记1继承中构造方法的访问特点

本文深入探讨了Java中继承机制下构造方法的调用过程,解释了子类构造方法如何通过super关键字调用父类构造方法,以及在不同情况下super()的使用规范。

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

*java学习之路:继承中构造方法的访问特点

定义一个父类

public class Fu {

    public Fu(){//父类构造方法
        System.out.println("父类方法的无参构造");
    }
}

定义一个子类

public class Zi extends Fu {

    public Zi(){//子类构造方法
        System.out.println("子类无参构造方法");
    }
}

定义一个子类对象,当创建一个类对象时,其实就是在调用类的构造方法

public class Demo01Constructor {

    public static void main(String[] args) {
        Zi zi = new Zi();

    }
}

运行得到结果

父类无参构造方法
子类无参构造方法

可以看到,是父类的构造方法先运行
那是因为子类的构造方法内会默认存在一个super(),super()就是调用父类的构造方法的

public class Zi extends Fu {

    public Zi(){
        super();//是默认赠送的,但是没有参数,调用父类的构造方法
        System.out.println("子类无参构造方法");
    }
}

当父类的构造方法变为有参数构造方法时,那么子类中这个默认赠送super()方法就不能正确调用父类的构造方法,因此需要向super()的括号中添加参数。
父类

public class Fu {
    public Fu(int num){
        System.out.println("父类有参构造方法");
    }
}

对应的子类

public class Zi extends Fu {

    public Zi(){
        super(20);//调用父类的构造方法
        System.out.println("子类无参构造方法");
    }
}

结论:1、当父类中的构造方法只有一个无参构造方法或者有一个无参构造方法和一个全参构造方法时,那么子类的构造方法中可以没有super();的,编译器也不会报错,当然自己写上一个也可以。
2、当父类中只有一个全参构造方法时,那么子类的构造方法中一定要有一个super(参数);不然编译器会报错

第一次写博客记录自己的学习情况,加油!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值