子类&重载方法

时间:2017-11-11 04:11:20

标签: java inheritance methods subclass superclass

我有一个重载方法,每个方法都采用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)

的方法

是否存在涉及保留重载方法的解决方案?

干杯。

1 个答案:

答案 0 :(得分:0)

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

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

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

现在,SupporterPlayerMember的{​​{1}}参考变量的子类,可以保留它们。

注意: 谨慎使用Member,因为Member m没有MemberSupporter的属性除Player之外。

希望这有帮助。