子类是否需要声明父类属性?构造器实现相关技术疑问
子类构造器无需重复声明父类属性
答案很明确:不需要在子类中重新声明父类的属性,就能完成子类构造器的实现。
子类会自动继承父类的非私有属性,你只需要在子类构造器中调用父类的构造器,就能完成父类属性的初始化,不用自己再重新定义一遍。
举个Java的例子更清楚:
父类代码
public class Parent { protected String name; protected int age; // 父类带参构造器 public Parent(String name, int age) { this.name = name; this.age = age; } }
子类代码
public class Child extends Parent { // 子类独有的属性 private String school; // 子类构造器:调用父类构造器初始化父类属性,只处理自己的新属性 public Child(String name, int age, String school) { super(name, age); // 调用父类构造器,初始化name和age this.school = school; } }
还有几个关键点要注意:
- 如果父类有无参构造器(默认自带或者手动编写的),子类构造器里可以不用显式写
super(),编译器会自动帮你调用父类无参构造器 - 如果父类只有带参构造器,子类构造器必须显式调用
super(参数列表),否则编译会报错 - 要是父类的属性是
private的,子类不能直接访问,但可以通过父类提供的get/set方法,或者父类的构造器来初始化,同样不用在子类里重新声明这些私有属性
内容的提问来源于stack exchange,提问作者Tobias Koroyan
相关产品推荐
相关产品推荐

