2017-11-11 136 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