如何在超类方法中使用子类参数?

How to use subclass parameters in superclass method?

我有一个名为 Player 的超级class,我有 3 个子class,分别是 Young HustlerStudentThe Herbalist.

在每个子class中我有私人参数moneystashSizeconnections

我想在 Player class 中创建一个名为 sellWeed() 的方法,它从 stashSize 中删除 1 并将 10 添加到 money,以便当在 main 方法中调用它们时,我可以将该方法应用于所有 subclasses。但是如何从 subclasses 中获取私有参数到 superclass 中呢?

我不能在 superclass 中声明它们,因为每个 subclass 都有自己的默认启动参数,这些参数应该在游戏中进行。

像这样的东西应该可以工作:

class Player {
  protected int money;
  protected int stashSize;
  // and the connections parameter too...
  public Player(int money, int stashSize) {
    this.money = money;
    this.stashSize = stashSize;
  }
  public void sellWeed() {
    // work with money and stashSize here
  }
}

class Student extends Player {
  public Student() {
    super(0, 10); // no money and stashSize 10 for student
  }
}

想法是将私有参数移动到超级class。然后您可以通过将值传递给超级构造函数 (super()) 来初始化它们。