gpt4 book ai didi

聚合子类中的Java构造函数

转载 作者:行者123 更新时间:2023-12-01 09:09:14 27 4
gpt4 key购买 nike

我最近学习了子类的使用,正在创建一个Java游戏。我有一个父类(super class)角色,它是游戏的角色。这个类别有许多子类别,例如 SOLDIER 和 FARMER。现在我需要一个名为 GROUP 的子类,它是一堆字符。

父类(super class)构造函数如下:

public Character (String id,Position p);

如何创建子类GROUP的构造函数,它必须调用 super 构造函数N次?

最佳答案

How can I create the constructor of the subclass GROUP, which has to call the super constructor N times?

你不能。而且您不需要这样做。

每个 Java 类都有一个父类(super class)。并且类的每个对象只有其父类(super class)的一种状态。

幸运的是,您的 Group 类不必调用 super 构造函数 N 次。一个组要么是一个角色,要么不是。如果它是一个字符,则它是一个字符。您调用一次 Group 的 super 构造函数。

无论如何,该组包含个字符。士兵或农民的 super 构造函数是从士兵或农民的构造函数调用的,而不是从包含该角色的组调用。

例如,您的 Farmer 类可能如下所示:

public class Farmer extends Character {
public Farmer(String id,Position p) {
super( id, p ); // <-- Superclass constructor for one farmer.
...
}
...
}

如果 Group 是一个角色,那么您的 Group 类可能如下所示:

class Group extends Character { 
private Collection<Character> m_members;
Group( String id,Position p, Collection<Character> members ) {
super( id, p ); // Superclass constructor for the *group*.
m_members = new ArrayList<>( members ); // Defensive copy
}
}

或者这个,如果不是的话。

class Group  { 
Group( Collection<Character> members ) {
m_members = new ArrayList<>( members ); // Defensive copy
}
}

关于聚合子类中的Java构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41025648/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com