我会尽力解释我正在处理的问题。所以我有一个子类";WeaponCarrier;我有一把武器。
- 那个"武器;是一个类;void setHolder(WeaponCarrier持有者({this.holder=holder}
- ";武器;类也有一个";WeaponCarrier getHolder(({return holder;}"方法
我想做的是通过WeaponCarrier中的一个子类更改武器setHolder/getHolder。类似于:
private class sword extends WeaponCarrier
{
void methodName(){ weapon.setHolder(weapon.holder);} //This code doesn't work but I have tried a lot of things and nothing seemed to work either
}
我想要的结果是:当我"System.out.println(getHolder(";我想从setHolder中获得我通过子类给出的新值。
如果这个问题对你没有任何意义,我就把它记下来。非常感谢您抽出宝贵的时间。
您可以使用抽象类武器并使用其实例。然后使用类似的代码
public abstract class Weapon{
Weaponcarrier holder;
String name;
//this creates the name var for the weapon
public Weapon(String name){
this.name = name;
//this sets the name that gets coded for the weapon to the instance of the weapon.
}
public void setHolder(weaponCarrier){
this.holder = weaponCarrier;
}
public Weaponcarrier getHolder(){
return this.holder
}
}
然后制作一把剑(例如(
public class Sword extends Weapon{
public Sword(){
super("Sword"/*the name*/);
}
现在制作一个列表,将所有武器添加到所谓的武器列表中,并将所有武器都添加到该列表中。然后创建一个函数,在调用时返回武器的类。然后,您可以使用该类来调用该实例的函数。这是可扩展的,包括你想要使用的所有武器。如果你不理解第二部分,你可以问,我会告诉你代码。
然后,您可以在括号之间输入要设置的值,它会将其设置为该值。还要确保你放了正确的新,因为现在它正在将自己设置为当前的
此代码不起作用。。。
如果我们仔细看这一行。。。
void methodName(){ weapon.setHolder(weapon.holder);}
那么我们将看到它没有意义,因为weapon
对象在其字段上设置的值等于其当前值。它永远不会改变任何。
如果您将此行更改为更有用的内容,那么您可以像重写任何其他方法一样重写getter或setter。
理想情况下,您应该通过单元测试来覆盖您的代码,以确保它的工作方式恰好您如何取消配置它。