2017-11-11 137 views
-2

我有一个重载的方法,每次服用的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

'public void addMember(Member m)'? – c0der

回答

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的子类别Member的参考变量可以容纳它们。

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

希望这会有所帮助。

+0

谢谢!我确实知道这一点,但是在我的情况下,我需要区分并为每个子类做不同的事情。我做了检查'instancesof'然后运行另一个方法来处理这种类型的子类。希望能帮助有类似问题的其他人 – Snar3