gpt4 book ai didi

java - 有人能帮我解决Java中关于 "super"的问题吗?

转载 作者:行者123 更新时间:2023-12-02 08:26:52 25 4
gpt4 key购买 nike

我对 Java 的“ super ”部分不太清楚,那么我该如何编写它呢?

public class AggressiveAlien extends Alien
{

public AggressiveAlien(XYCoordination currentLocation, int energyCanister)
{
super(currentLocation, energyCanister);
}

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

private boolean attack(int lifePoints)
{
boolean attack;
if (AggresiveAlien.currentLocation() = Alien.getOtherAlien())
{
AggresiveAlien.energyCanisters = (int) (1/2) * Alien.energyCanisters + AggresiveAlien.energyCanisters;
lifePoints = lifePoints - 1;
attack = true;
}
return attack;
}
}

最佳答案

只要Alien类有一个带有签名的构造函数,您所写的就是正确的:

public Alien(XYCoordination, int)

具体来说,

super(currentLocation, energyCanister);

意味着,在运行此构造函数之前,运行直接父类(super class)的构造函数,向其传递 currentLocationenergyCanister 值。请注意,每个构造函数(Object 构造函数除外)都显式或隐式地链接到父类(super class)构造函数。

<小时/>

但是,以下内容可能不正确:

AggresiveAlien.currentLocation()

这要求 currentLocation() 是静态方法,这意味着 AggresiveAlien 的所有实例都具有相同的位置...这并不意味着有很多意义。事实上,我认为该方法需要是一个实例方法,因此调用必须是:

this.currentLocation()

或者只是

currentLocation()

您在很多地方都犯了这个错误。

关于java - 有人能帮我解决Java中关于 "super"的问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4357617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com