gpt4 book ai didi

java - 在java中继承带有构造函数参数的类

转载 作者:搜寻专家 更新时间:2023-10-31 20:15:29 24 4
gpt4 key购买 nike

情况是我想继承一个对象以获得更清晰的构造函数接口(interface):

class BaseClass {
public BaseClass(SomeObject object){
...
}
}

class SubClass extends BaseClass{
private SubObject subObject = new SubObject();
public SubClass(){
super(new SomeObject(subObject)); // doesn't compile
}
}

但要做到这一点,我需要像上面的示例一样在构造函数之前做一些事情,但不能这样做,因为 Java 不允许这样做。有没有办法解决?我开始觉得如果你的类被设计成子类,它应该总是实现默认构造函数并为它需要的值提供 setter ......如果你直接在 super 构造函数中创建一个新对象,有时你可以摆脱这个作为参数,但如果您需要对您创建的对象的引用,那么您将被清理。

最佳答案

您需要更改它,这样您就不会在超构造函数调用中引用实例成员。不幸的是,如果您随后需要“保存”SubObject,这就变得棘手了。我认为您必须使用构造函数链来完成:

class SubClass extends BaseClass{
private SubObject subObject;

public SubClass() {
this(new SubObject());
}

private SubClass(SubObject subObject) {
super(new SomeObject(subObject));
this.subObject = subObject;
}
}

关于java - 在java中继承带有构造函数参数的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6745070/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com