Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用对象实现Java接口_Java_Interface - Fatal编程技术网

用对象实现Java接口

用对象实现Java接口,java,interface,Java,Interface,我有一个关于接口的问题。我有一个接口,它有一个叫做GameWorld的类的所有方法。游戏世界有一个叫做GameObject的类,可以是坦克、石头、导弹等 public interface IGameWorld { public Point getLocation(); // GameObject public Color getColor(); public void setLocation(Point newCoord); public void setColor(Color newColor

我有一个关于接口的问题。我有一个接口,它有一个叫做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
}
 }
}

可能吗?如果没有,还有什么办法可以替代呢?谢谢

创建类的实例/对象。无需定义表示对象的单独类。无论如何,您所做的都是错误的,因为类GameWorld实现了IGameWorld,而GameWorld必须实现所有的方法,而不是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();

对于上面的答案,我想补充一点,使用接口会使我们的代码松散耦合。所以,不要在需要的地方使用游戏对象界面

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

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

等等。

我不认为你的游戏对象类应该在你的游戏世界类里面。尝试在单独的文件中使它们成为公共类。然后,只有游戏世界将实现IGameWorld,而您的其他类(您提到的坦克、岩石、导弹等)将扩展GameObject。

这就是接口的用途,不是吗?谢谢。我过一会儿再打给你,看看是否行得通。