如何使一组用户定义的函数可用于许多其他类?

时间:2011-06-28 21:48:39

标签: java class function

我想开始说Stack Overflow是一个巨大的帮助,只是从查找其他人的问题,但是对于这个问题,我很难找到解决方案,因为很难说出一个问题。

我正在用Java制作2D平台透视射击游戏,所以我有一套创建子弹的功能。示例:

public void CreateShot01(x, y, angle, velocity, bulletID, delay){
/*...will do a bunch of stuff ultimately creating a object in the Projectiles[]    
array, which will be drawn on screen from the Board Object/Class*/
}

这个功能里面的内容不是问题。我希望这个和其他类似的功能可用于多个类,基本上适用于任何需要拍摄的类。我不想将此函数复制粘贴到使用它的每个类中。所以我将所有函数放在一个单独的类BulletHandler中会有所帮助,这将是标准的。

但是如何从所有需要它们的类中引用这些函数。我不确定使用的是否是:

-import?似乎是最合乎逻辑的解决方案,但是如何导入自己的东西呢?

-extends? AFAIK,这涉及超级和覆盖功能,而不是我需要的功能

最好的方法是什么?

我不知道要提供什么信息,所以如果有任何需要添加的话就提一下,我马上就会这样做。

3 个答案:

答案 0 :(得分:4)

尝试将对象映射到物理现实。所有拍摄的东西都应该继承自抽象类,比如AbstractGun,它应该包含瞄准,射击,加载等背后的基本思想。因此这部分可以通过继承来解决。然后,如果一个角色需要拍摄某些东西,他将需要获得一个像枪一样的物体。因此,问题的这一部分是通过构图来解决的 - 射手不是从AbstractGun派生出来的(他没有履行“is-a”关系),但必须拥有一个继承自AbstractGun的对象,从而实现了“具有 - “枪支关系。”

答案 1 :(得分:1)

你的条款令人困惑。

导入仅用于引用另一个包中的文件,而无需在代码中添加其所有包层次结构。没什么。

只要你说,这是子类化('extends')的经典例子。创建一个实现shoot()的“父”类;拍摄的所有物体都从中延伸出来。他们只需要调用shoot()来使用它,而不必提供不同的实现(除非你想)。

当然,可能存在问题(如果有两种方法会发生什么,并且使用它们中的任何一种的类不会重叠?),但除此之外,你应该扩展一个主类。

BTW,添加“家庭作业”标签


添加回答海报的评论:

检查抽象类。它们意味着它们不能被实例化(你不能创建它们的“新”)并且它们可以有一些抽象方法,你知道签名(参数,返回类型)但不提供实现。您可以完全实现其他方法。

此外,可以扩展常规的“非抽象”类并添加新方法...请回到Java基础知识来调整您的概念(不要担心,我们所有人都会经历学习尝试的模式 - 回过头来学习我们知道它意味着什么。)

答案 2 :(得分:0)

您正在寻找抽象类或接口(实现)。

另一件事是你可能想做而不是做“CreateShot01”,“CreateShot02”等等是这样的:

public void globalShoot (int limit, type? x, type? y, type? angle, type? velocity, type? bulletID, type? delay) {
    for (int i = 0; i < limit; i++) {
        this.wait(delay);
        doShooting(x, y, angle, velocity, bulletID);
    }
}

或类似的东西。 :)