-1

我正在尝试从存储在地图中的对象构造多个对象(我正在复制游戏对象)。但是我想要复制的类型是 GameObject 的子类型,例如 Wall 和 Turret。如果我在我的超类中声明了一个 public GameObject(GameObject go){ } 方法并在我的子类中定义了 public Turret(Turret t){ },那么 Map 中的对象会使用子类构造函数吗?我知道这对于方法是正确的,只是不确定对象。我尝试过搜索,在我看来,这似乎是一个非常基本的 oop 问题,但搜索起来很困难,任何输入都将不胜感激!:D

只是我想要的一个简短的例子。

Map<String, GameObject> equipment = new HashMap<String, GameObject>();
equipment.put("turret", new Turret(x, y));//turret extends PlaceableGameObject which       extends GameObject
if(user clicks){
    GameObect tempObject = new Turret(equipment.get("turret"));
    tempObject.setX(click.getX());
    tempObject.setY(click.getY());
    board.put(tempObject);
}
4

2 回答 2

2

您是在问:如果 Turret 扩展了 GameObject,并且您制作了 Turret,是否调用了 GameObject 构造函数中的代码?

是的,如果在两种情况下都定义了构造函数,将调用哪个?

TurretGameObject构造函数会隐式调用构造函数。

继承教程

“您可以编写一个子类构造函数来调用超类的构造函数,或者隐式调用,或者使用关键字 super。”

于 2012-12-28T06:38:56.783 回答
-1

我最终做的对我有用的是在我的超类和所有子类中编写一个 getNew(int x, int y) 方法。这返回了正确的对象。

于 2012-12-29T05:21:42.753 回答