Java 如何使用父类从子类获取参数?

Java 如何使用父类从子类获取参数?,java,inheritance,Java,Inheritance,我有一个儿童类AggressiveAlien,里面有一个方法 public boolean attack() { boolean attack; if (currentLocation == this.AggresiveAlien.getCurrentLocation) { energyCanister = (int) ( (1/2) * alien2.energyCanister + energyCanister); lifePoints

我有一个儿童类AggressiveAlien,里面有一个方法

public boolean attack()
{
    boolean attack;
    if (currentLocation == this.AggresiveAlien.getCurrentLocation)
    {
        energyCanister = (int) ( (1/2) * alien2.energyCanister + energyCanister);
        lifePoints = (int) (lifePoints - (1/2)*alien2.energyCanister);
        attack = true;
    }
    return attack;
}
我希望返回的值在父类中使用

public void gotAttacked()
{
    if (AggresiveAlien.attack())
        energyCanister = energyCanister/2;
}
但它似乎在攻击外星人的部分给出了错误。我有没有办法使用这个从AggressiveAlien返回的值来在Alien中使用

非常感谢您的帮助。谢谢

这是儿童课的另一部分

公众阶级的侵略性 { 公共攻击性电子设备(XY协调当前位置,int energyCanister) { 超级(当前位置、能量监测器); }


看起来您正试图静态地使用AggressiveAlien。相反,您可能希望执行以下操作:


if ((AggresiveAlien)this.attack()) energyCanister = energyCanister/2;

但鉴于信息量有限,我无法确定。

看起来您试图静态使用AggressiveAlien。相反,您可能希望:


if ((AggresiveAlien)this.attack()) energyCanister = energyCanister/2;

但鉴于信息量有限,我不能确定。

你说,你有一个父类和子类,这意味着你在这里使用的是继承。通过使用虚函数,然后在子类中重写,你可以轻松完成任务

Alien
类中创建一个名为
attack()
的函数,并在子类
aggressivealien
中重写

例如:

外星人类:

public boolean attack()
{
    return false;
}
public boolean attack()
{
    return true;
}
攻击性外星人类:

public boolean attack()
{
    return false;
}
public boolean attack()
{
    return true;
}
和您的功能

public void gotAttacked()
{
    if (this.attack())
        energyCanister = energyCanister/2;
}

您可以说,您有一个父类和子类,这意味着您在这里使用的是
继承
。通过使用虚函数,然后在子类中重写,您可以轻松完成任务

Alien
类中创建一个名为
attack()
的函数,并在子类
aggressivealien
中重写

例如:

外星人类:

public boolean attack()
{
    return false;
}
public boolean attack()
{
    return true;
}
攻击性外星人类:

public boolean attack()
{
    return false;
}
public boolean attack()
{
    return true;
}
和您的功能

public void gotAttacked()
{
    if (this.attack())
        energyCanister = energyCanister/2;
}

我认为您可能有两个问题…首先需要将基类型强制转换为子类型,例如

((AggressiveAlien)this).attack()
此外,1/2实际上可能是0!1和2被解释为整数,这意味着任何除法的值都是零!因此1/2=(int)0.5=0

检查您的类型!最好使用0.5或/2.0强制将值计算为浮点或双精度(取决于平台)


希望这有帮助!

我认为您可能有两个问题……首先,您需要将基类型强制转换为子类型,例如

((AggressiveAlien)this).attack()
此外,1/2实际上可能是0!1和2被解释为整数,这意味着任何除法的值都是零!因此1/2=(int)0.5=0

检查您的类型!最好使用0.5或/2.0强制将值计算为浮点或双精度(取决于平台)


希望这有帮助!

您在“攻击性外星人.攻击()部分”中遇到的错误是什么?从您提供的内容很难判断,但似乎攻击函数所在的对象不是AggressiveAlien?我不想问这个问题,但您是否导入了
AggressiveAlien
getCurrentLocation
似乎是一个方法,但您将其用作字段。不应该是
this.AggressiveAlien.getCurrentLocation()
?您会遇到什么样的错误?1/2也可以写为0.5(可能编译器已经这样做了,但更容易阅读),而
energyCanister=energyCanister/2
更好地写为
energyCanister/=2
。您在“攻击性外星人.攻击()部分”会遇到什么错误?从您提供的内容很难判断,但似乎攻击函数所在的对象不是AggressiveAlien?我不想问这个问题,但您是否导入了
AggressiveAlien
getCurrentLocation
似乎是一个方法,但您将其用作字段。不应该是
this.AggressiveAlien.getCurrentLocation()
?您会遇到什么样的错误?1/2也可以写成0.5(可能编译器已经这样做了,但更容易阅读),而
energyCanister=energyCanister/2
最好写成
energyCanister/=2