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