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

时间:2010-12-05 10:02:41

标签: java inheritance

我有这个子类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;
}

我希望在父类Alien

中使用返回的值
public void gotAttacked()
{
    if (AggresiveAlien.attack())
        energyCanister = energyCanister/2;
}

但它似乎在AggresiveAlien.attack()部分给出了错误。我有什么方法可以使用AggresiveAlien的返回值在Alien中使用吗?

非常感谢帮助。谢谢!

这是子类的另一部分

公共类AggressiveAlien延伸Alien {     public AggressiveAlien(XYCoordination currentLocation,int energyCanister)     {         super(currentLocation,energyCanister);     }

public int collectCanister(NormalPlanet canister)
{
    super.collectCanister();
    n=1;
}

3 个答案:

答案 0 :(得分:1)

我认为你可能遇到两个问题......首先你需要将基类型转换为子类型,例如

((AggressiveAlien)this).attack()

另外,1/2实际上可能是0! 1和2被解释为整数,这意味着任何除法的值都被置尽了!所以1/2 =(int)0.5 = 0

检查你的类型!您最好使用0.5或使用/2.0强制值计算为float或double(取决于平台)。

希望这有帮助!

答案 1 :(得分:0)

看起来好像你正试图静态使用AggresiveAlien。相反,你可能想做:


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

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

答案 2 :(得分:0)

你说,你有一个父类和子类,这意味着你在这里使用inheritance。您可以使用虚函数轻松完成任务,然后覆盖子类。

Alien类中创建一个名为attack()的函数,并在子类AggresiveAlien中覆盖。

如下:

外星人类:

public boolean attack()
{
    return false;
}

AggresiveAlien class:

public boolean attack()
{
    return true;
}

和你的已解决功能

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