亚类重载方法
我有一个重载的方法,每次服用的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
类,但不会相反,因为subclass
继承parent
类的属性。
删除public void addMember(Player p)
和public void addMember(Supporter s)
和定义方法public void addMember(Member m)
。
现在作为Supporter
和Player
是Member
的子类别Member
的参考变量可以容纳它们。
N.B:使用Member m
小心,因为Member
没有除overridden
者的的Supporter
和Player
性能。
希望这会有所帮助。
谢谢!我确实知道这一点,但是在我的情况下,我需要区分并为每个子类做不同的事情。我做了检查'instancesof'然后运行另一个方法来处理这种类型的子类。希望能帮助有类似问题的其他人 – Snar3
'public void addMember(Member m)'? – c0der