java - 类似的子类

标签 java class inheritance

假设我有一个像这样相当简单的 A 类 -

public class A{
  private int randomField = 0;
  protected int key;
  protected double dmg;
}

现在我想编写一些继承 protected 字段的子类,并且仅根据分配给这些字段的初始值而有所不同 - 例如,如果我编写了两个子类 B 和 C,则它们之间的唯一区别这两个子类的值 key 和 dmg 将具有不同的值。他们将共享一个方法,即 set,该方法完全相同,因为它会影响相同的变量。

我发现当我编写这些子类时,我在重复自己,因为我只是更改构造函数来为 key 和 dmg 设置不同的初始值,然后简单地复制并粘贴 set 方法。

有没有一个“好”的方法来做到这一点?

最佳答案

这不是一个应该进行子类化的地方,事实上这是对继承的严重过度使用。如果“子类”之间的唯一区别是对象的初始状态,则仅对所有对象使用一个类,而只需在构造函数或工厂中设置状态来创建所需状态的实例。

例如,

public class A{
  private int randomField = 0;
  private int key;
  private double dmg;

  public A(int key, double dmg) {
    this.key = key;
    this.dmg = dmg;
  }

  // getters and possibly setters...
}

关于java - 类似的子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11068637/

相关文章:

Java:找到大写字母时拆分字符串

JAVA:如何检查网站文档是否包含某个单词?

wordpress 将字段添加到 post_class

java - 类型 'return length as Int.toString'的表达式 'Nothing'不能作为函数调用

java - 逐行打印十位斐波那契数

c# - 当 "sealed"是可选的时,C# 中 "virtual"的用途是什么?

java - 什么时候使用不同的类?

java - Java是否支持多重继承?

java - 如何从匿名内部类调用外部类父级中的成员变量

java - 创建给定类类型的实例