带对象的Java接口实现

时间:2013-10-30 06:31:39

标签: java interface

我对接口有疑问。我有一个接口,它具有一个名为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
}
 }
}

这可能吗?如果没有,这样做的替代方案是什么?谢谢。

3 个答案:

答案 0 :(得分: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();

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

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