You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java父类子类继承关系中子类构造方法的正确写法是什么?

你的实现思路大致方向完全正确,给出的示例代码也可以正常编译运行,关于Java子类构造和父类成员访问的规范说明如下:

1. 子类构造方法的写法正确性

Java继承体系下,子类实例化时必须先完成父类的初始化逻辑,规则如下:

  • 如果父类只定义了有参构造方法(如你示例中的类A没有无参构造),子类构造方法的第一行必须显式调用super(对应参数)匹配父类的有参构造,你写的B、C类构造第一行调用super(num1, num2)的写法完全符合规范,就是正确的父类属性初始化操作。
  • 如果父类存在无参构造,你不写super()的话编译器会自动在子类构造第一行补全无参的super()调用,不会报错。

2. 父类属性访问的逻辑正确性

你提到的「初始化父类后通过get/set方法、super.方法名调用父类属性和方法」的逻辑是完全正确的:

  • 你示例中父类A的num1、num2是private修饰的私有属性,子类不管是B还是C都不能直接访问这两个属性,必须在父类A中定义对应的公开getter、setter方法,子类才能通过调用这些方法操作父类的私有属性,符合Java封装的规范要求。
  • 如果父类的属性/方法用protected或者public修饰,子类可以直接通过super.属性名/方法名直接访问,不需要额外调用get/set,但工业级开发中通常会把类属性设为私有,通过get/set对外暴露操作入口,你的思路是符合最佳实践的。

注意事项

  • super()调用必须放在子类构造方法的第一行,放在其他位置会直接编译报错,你当前的写法符合要求。
  • 如果要在子类中重写父类的方法,调用父类的原有实现也需要用super.方法名(参数)的写法。

内容的提问来源于stack exchange,提问作者braiden-cu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 10:15:03