![](/img/trans.png)
[英]Java check if Interface implementation is an object of particular implementation
[英]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.