gpt4 book ai didi

java - 要求子类设置父类的数据成员

转载 作者:行者123 更新时间:2023-11-29 10:11:08 29 4
gpt4 key购买 nike

这似乎是一项常见的任务,但我有点困惑。假设我有一个带有数据成员和相应的 getter/setter 的抽象父类。

public abstract class Parent {

private MyObj myObj;

public MyObj getMyObj() { return myObj; }
public void setMyObj(MyObj myObj) { this.myObj = myObj; }
}

我需要强制子类设置“myObj”变量。我有两个选择:

  1. 使 setter 成为“抽象的”(而不是 getter)。这似乎很奇怪我,我以前没见过。
  2. 避免在中声明数据成员 parent 在所有。只有一个父方法,

    抽象公共(public) MyObj getMyObj();

然后父对象将始终引用为 getMyObj().getField1()、getMyObj().getField2() 等。每次创建一个新对象时,而不是将其存储在一个地方。

强制子类设置父类数据变量的标准方法是什么?它是在 getters/setters 之外的新抽象方法吗?

最佳答案

要让编译器强制设置 myObj,您可以这样做:

public abstract class Parent {

private final MyObj myObj;

final 表示该值不能更改,但也必须设置。由于您有一个 setter ,因此该值可能会更新;如果这是预期的,请不要添加 final 关键字。

要确保字段已设置,请添加一个构造函数:

    protected Parent( MyObj initial ) {
if ( initial == null )
throw new IllegalArgumentException( "Must provide a value!" );
this.myObj = initial;
}

关于java - 要求子类设置父类的数据成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33742283/

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