Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.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_Oop_Constructor - Fatal编程技术网

Java 超类/子类构造函数用法

Java 超类/子类构造函数用法,java,oop,constructor,Java,Oop,Constructor,我试图从一个存储在地图中的对象构造多个对象(游戏对象就是我复制的对象)。但是我想复制的类型是游戏对象的子类型,比如墙和炮塔。如果我在我的超类中声明了一个公共GameObject(GameObject go){}方法,并且在我的子类中定义了公共炮塔(炮塔t){},那么映射中的对象会使用子类构造函数吗?我知道这对方法是正确的,只是不确定对象。我已经尝试过搜索,在我看来这是oop的一个非常基本的问题,但这是一件很难搜索的事情,任何输入都会非常感激D 这只是我想要的一个简短的例子 Map<Stri

我试图从一个存储在地图中的对象构造多个对象(游戏对象就是我复制的对象)。但是我想复制的类型是游戏对象的子类型,比如墙和炮塔。如果我在我的超类中声明了一个公共GameObject(GameObject go){}方法,并且在我的子类中定义了公共炮塔(炮塔t){},那么映射中的对象会使用子类构造函数吗?我知道这对方法是正确的,只是不确定对象。我已经尝试过搜索,在我看来这是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);
}
Map设备=新HashMap();
设备。放置(“炮塔”,新炮塔(x,y))//塔楼扩展了PlaceableGameObject,它扩展了GameObject
如果(用户点击){
GameObjectTempObject=新炮塔(装备获取(“炮塔”);
setX(单击.getX());
setY(单击.getY());
board.put(临时对象);
}
你是否在问:如果炮塔扩展了游戏对象,你制作了一个炮塔,那么游戏对象构造函数中的代码被调用了吗


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

炮塔
构造函数会隐式调用
游戏对象
构造函数

发件人:


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

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

您是否在问:如果
炮塔
扩展了
游戏对象
,并且您制作了一个
炮塔
,那么
游戏对象
的构造函数中的代码被调用了吗?是的,如果在这两种情况下都定义了将被调用的构造函数?不清楚您在问什么。在这种情况下,
Factory
可能有用吗?在我提供的情况下,添加到板上的结果对象是炮塔还是游戏对象?对象本身就是炮塔,因为您明确地调用了Turrent构造函数,但游戏对象基类也会被初始化。因为很好,先生,您的解决方案给了我一个游戏对象,而不是你说的炮塔。请删除您对此错误的否决票1对象是炮塔,但您创建的引用为GameObject。记住,没有我的解决方案。你的问题“映射中的对象会使用子类构造函数吗?”有答案吗?我不想要分数!我想要一个有效的解决方案。使用超类构造函数创建超类的实例。我的问题是,如上所述,有没有办法调用一个超类构造函数来调用合适的子类构造函数。谢谢你的回答,但这显然是行不通的。投票否决我的问题和答案不会改变这一点。你没有问任何解决方案,你问的问题我的答案完全回答了。请看答案中引用的部分。你对我问过的每一个问题都投了反对票。那可不酷,伙计。如果你投反对票,我将不胜感激。我报告了你。这是不可接受的,你应该被禁止。