我有一个重载方法,每个方法都采用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)
是否存在涉及保留重载方法的解决方案?
干杯。
答案 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)
。
现在,Supporter
和Player
是Member
的{{1}}参考变量的子类,可以保留它们。
注意: 谨慎使用Member
,因为Member m
没有Member
和Supporter
的属性除Player
之外。
希望这有帮助。