子类和重载方法

Subclasses & overloaded methods

我有一个重载方法,每个方法都采用 Member

的子类
public void addMember(Player p) {

public void addMember(Supporter s) {

我有一个 ArrayList<Member>,我想循环遍历每个 Member,调用传递子类实例的 addMember() 方法。

类似

for(Member m : members) {
    this.addMember(m);
}

但是不能,因为我没有addMember(Member m)

的方法

是否有一种解决方案可以完全保留我的重载方法?

干杯。

在那种情况下,您不需要两种不同的方法,您只需要一种方法 public void addMember(Member m)。您可以将 subclass 实例分配给 parent class 但不能相反,因为 subclass 继承了 parent class 的属性。

删除 public void addMember(Player p)public void addMember(Supporter s)

并定义一个方法public void addMember(Member m).

现在 SupporterPlayerMember 的子class Member 的引用变量可以容纳它们。

N.B.: 小心使用 Member m 因为 Member 没有SupporterPlayer 的属性,overridden 除外。

希望这对您有所帮助。