gpt4 book ai didi

Java 类作为变量

转载 作者:行者123 更新时间:2023-12-01 13:17:17 25 4
gpt4 key购买 nike

我正在用 Java 开发一个游戏,我正在尝试创建可以发射射弹的敌人。我正在为所有敌人类型定义基类,并且我已经定义了射弹类。我想做的是在敌人基类中定义一个类类型变量,以及一个在调用时创建定义的射弹类的新实例的 shotProjectile() 方法。伪代码:

public class EnemyClass extends GameCharacter {
protected Class projectileType;
protected int a;
protected int b;

// Constructor and other stuff here

public void shootProjectile() {
projectileType newProjectile = new projectileType(a, b);
}
}

public class MyEnemySubClass extends EnemyClass {
public MyEnemySubClass() {
super();
projectileType = MySuperProjectile;
}
// Rest of class stuff here
}

public class MySuperProjectile extends Projectile {
public MySuperProjectile(parameter a, parameter b) {
// Constructor stuff using a and b
}
// Other projectile-related stuff
}

当然,我的想法是,在敌人子类中,我需要做的就是定义它们发射的射弹类型,基类中的shootProjectile() 方法将完成剩下的工作。

我不知道如何实现这一目标。我已经研究过定义泛型,但不确定如何使其适合我的目的,并且我不确定我是否完全理解它们是如何工作的。在 Java 中是否有可能出现这样的情况,或者我需要为 EnemyClass 的每个子类覆盖 shotProjectile 以在攻击时创建自己的射弹?

提前致谢!

最佳答案

如果我理解正确,您不需要使用泛型。

如果您想要 Enemy 的不同实现射击 Projectile 的不同实现,那么只需在 Enemy 中定义抽象方法 Projectile shotProjectile() 抽象类并按照您认为适合的方式在每个 Enemy 子类中实现它。

但是如果您出于某种原因坚持使用它们。他们将参数 T 添加到 Enemy 类。并将该方法定义为T shotProjectile()。示例:

abstract class Enemy<T extends Projectile> {
abstract T shootProjectile();
}

再来一次。在子类中进行实现,例如:

class Sniper extends Enemy<SniperRifleBullet>{

@Override
SniperRifleBullet shootProjectile() {
return new SniperRifleBullet();
}
}

class Projectile{}

class SniperRifleBullet extends Projectile{}

关于Java 类作为变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22364479/

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