如何在超类方法中使用子类参数?
How to use subclass parameters in superclass method?
我有一个名为 Player
的超级class,我有 3 个子class,分别是 Young Hustler
、Student
和 The Herbalist
.
在每个子class中我有私人参数money
、stashSize
和connections
。
我想在 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()) 来初始化它们。
我有一个名为 Player
的超级class,我有 3 个子class,分别是 Young Hustler
、Student
和 The Herbalist
.
在每个子class中我有私人参数money
、stashSize
和connections
。
我想在 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()) 来初始化它们。