因此,我正在做一些有关制作小游戏原型的课程。我有这些简单的类(以及其他一些不相关的类):
abstract class Weapon {
int damage;
int cost;
}
abstract class RangedWeapon extends Weapon {
int range;
int rounds;
}
class ExtraRounds extends Item{
int cost = 20;
int uses = 1;
void use(GameState state){
if (state.currentCharacter.weapon instanceof RangedWeapon){
state.currentCharacter.weapon.rounds += 10;
}
}
}
但是当尝试编译这个时
Implementations.java:56: error: cannot find symbol
state.currentCharacter.weapon.rounds += 10;
^
symbol: variable rounds
location: variable weapon of type Weapon
我只需要类
ExtraRounds
来检查weapon
是否属于类RangedWeapon
并采取相应的措施,但是我不知道哪里出了问题。任何帮助表示赞赏 最佳答案
您的武器属于武器类。您必须将其强制转换为RangedWeapon,以便编译器知道它是RangedWeapon:
if (state.currentCharacter.weapon instanceof RangedWeapon){
((RangedWeapon)state.currentCharacter.weapon).rounds += 10;
}
关于java - Java无法识别对象属于子类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49534658/