-1

Map に保存されているオブジェクトから複数のオブジェクトを構築しようとしています (GameObject はコピーしているものです)。しかし、コピーしたいタイプは、Wall や Turret などの GameObject のサブタイプです。スーパークラスで public GameObject(GameObject go){ } メソッドを宣言し、サブクラスで public Turret(Turret t){ } を定義した場合、マップ内のオブジェクトはサブクラス コンストラクターを使用しますか? これがメソッドに当てはまることは知っていますが、オブジェクトについてはわかりません。私は検索を試みましたが、これはおっとの非常に基本的な質問のように思えますが、検索するのは難しいことであり、どんな意見でも本当に感謝しています! :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 に答える