从一个类创建具有不同属性的对象 - JAVA

时间:2015-05-22 18:08:42

标签: java oop

在Java中,我有一个abstract class Player和两个类StrikerDefender,它们都扩展了abstract class Player。我有Interface IAttackInterface IDefend。在这两个接口中,只有一种方法的原型 - 方法shoot(用于接口IAttack)和方法tackle(用于接口IDefend)。我在类shoot(resp tackle)中实现了方法Striker(resp。Defender)。通过此层次结构,我可以创建Strikes,将球射向给定距离。我可以创建防守者,他们只能以给定的强度来对付某人。

我想要的是能够创造能够完成不同任务(并且不仅射击到给定距离)的前锋(分别是防守者)。例如,我希望有一名能够投中点球的前锋,一名能够与其一起打球的前锋等。

我该怎么做?我是否需要为罢工者创造更多的课程(我的意思是针对罢工者进行惩罚的班级,以及为头部打球的前锋的班级)。是否有一种更优雅的方式让罢工者可以完成多项任务?

2 个答案:

答案 0 :(得分:1)

实现它的几种方法。

1)让另一个Stricker类实现两个IShootPenalty, and IAttack行为。您可以创建单独的所需接口,并让每个播放器对象实现适当的接口。根据需要混合搭配。

(或)

2)为抽象类中的每个行为创建布尔标志,并根据所需行为设置适当的标志。

Stricker.setShootPenality(true);
Striker.setShooter(true);

答案 1 :(得分:0)

一个好方法是将所有属性放在不同的类中。 比如说一个名为StrikerProperties.java的类。 您可以在此处设置不同的变量,并根据播放器的其他特征设置truefalse。这样您就可以将它用于不同的对象,也可以用于不同的类,以防您想要组建团队以及之后的所有团队。