0

我有一个关于接口的问题。我有一个接口,它包含一个名为 GameWorld 的类的所有方法。GameWorld 拥有一个名为 GameObject 的类,它可以是坦克、岩石、导弹等。

public interface IGameWorld
{
public Point getLocation(); // GameObject
public Color getColor();
public void setLocation(Point newCoord);
public void setColor(Color newColor);
}

我想在 GameWorld 的 GameObject 类中实现 IGameWorld 中的方法。像这样的东西。

public class GameWorld implements IGameWorld
{
  // vector to hold gameobjects
public class GameObject 
{
 private Point location;
 private Color color;     // all objects have a random color     
GameObject()
{
  // method 
}
public Point getLocation()
{
  // method
}
public Color getColor()
{
  // method
}
public void setLocation (Point newCoord)
{
  // method
}
public void setColor (Color newColor)
{
  // method
}
 }
}

那可能吗?如果没有,还有什么替代方法?谢谢。

4

3 回答 3

1

您制作类的实例/对象。无需定义代表您的对象的单独类。无论如何,您所做的都是错误的,因为GameWorld 类实现了 IGameWorld并且 GameWorld 必须实现所有方法而不是 GameObject 类。

您可以删除 GameObject 类

public class GameWorld implements IGameWorld
{
 private Point location;
 private Color color;     // all objects have a random color     
public Point getLocation()
{
  // method
}
public Color getColor()
{
  // method
}
public void setLocation (Point newCoord)
{
  // method
}
public void setColor (Color newColor)
{
  // method
}
}

然后制作这个具体类的实例/对象

IGameWorld gameObject = new GameWorld();
于 2013-10-30T06:36:14.250 回答
0

我认为您的 GameObject 类不应该您的 GameWorld 类中。尝试在单独的文件中将它们设为公共类。然后,只有 GameWorld 将实现 IGameWorld,而您的其他类(您提到的坦克、岩石、导弹等)将扩展 GameObject。

于 2013-10-30T07:01:53.373 回答
0

对于上面的答案,我想补充一点,使用接口使我们的代码松散耦合。因此,不要在需要的地方使用 GameObject 使用接口。

您的界面定义了所有类创建游戏所需的通用方法,因此我们可以用作:

 IGameWorld marioGame = new GameWorld();
 IGameWorld tankGame = new GameWorld();

等等

于 2013-10-30T06:42:38.460 回答