簡體   English   中英

帶對象的Java接口實現

[英]Java Interface implementation with object

我對接口有疑問。 我有一個接口,該接口具有稱為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
}
 }
}

那可能嗎? 如果不是,那么替代方法是什么? 謝謝。

您可以創建類的實例/對象。 無需定義代表您的對象的單獨的類。 無論如何,您做錯了,因為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();

在上面的答案中,我想補充一點,使用接口會使我們的代碼松散耦合。 因此,無需在需要的地方使用GameObject即可使用接口。

並且您的界面定義了所有類創建游戲所需的通用方法,因此我們可以將其用作:

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

等等

我不認為您的GameObject類應該 GameWorld類中。 嘗試在單獨的文件中將它們設置為公共類。 然后,只有GameWorld將實現IGameWorld,而您的其他類(您提到的坦克,石頭,導彈等)將擴展GameObject。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM