关于Java父类与子类的构造器问题 的个人理解

本文探讨了Java中父类构造器与子类构造器的关系。当父类有无参构造器时,子类可以自由定义构造器;反之,如果父类只有有参构造器,子类必须在构造器中通过super()调用来初始化父类。子类构造器在实例化时总是先调用父类的无参构造器。此外,this()和super()调用只能出现在构造器的第一行,且不能同时存在。
摘要由CSDN通过智能技术生成
  • 父类中存在无参构造函数,是子类存在构造函数的前提,如果父类中不存在无参构造器(由于类会默认存在一个无参构造器,此时的情况指的是父类存在有参构造器而没有显式的写出无参构造器),子类中只要存在构造器就会报错(子类默认存在的无参构造器也会报错哦)。

  • 父类存在无参构造器且有无参构造器时,子类可以只存在有参构造,在调用子类有参构造器时,会先调用父类的无参构造器。

  • 子类在实例化对象时,根据参数列表选择合适的构造函数进行初始化,子类的任何构造器被调用时都要先调用父类的无参构造函数(因为这是前提

  • this();//无参的自身构造器调用,只能存在于有参构造函数的第一行;

  • this("name"); //有参的自身构造函数的调用,只能存在于无参构造函数的第一行;

  • super();和super("canshu");非常不好意思,若在父类中只存在有参构造函数,你仍可以在子类的有参构造器或无参构造器中通过调用super("canshu")(也就是有参父类构造函数的调用)来实现程序,此时就不依赖父类的无参构造器了,但是因为没有父类无参构造器,所以你的程序中不能存在父类的无参构造函数的调用super()。所以说上几条所说也有例外

  • this();super();只能存在于构造方法的第一行,所以不能同时存在。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值