2017-11-11 11 views
-2

Iがオーバーロードされたメソッド、それぞれは私が通って各MemberためのループたいArrayList<Member>を有するMemberサブクラス&オーバーロードされたメソッド

public void addMember(Player p) { 

public void addMember(Supporter s) { 

のサブクラスを取っています、サブクラスのインスタンスを渡してaddMember()メソッドを呼び出します。

for(Member m : members) { 
    this.addMember(m); 
} 

のようなものしかし、私はaddMember(Member m)

の方法を持っていけないことができないので、すべてで私のオーバーロードされたメソッドを維持する必要解決策はありますか?

乾杯。

+0

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

答えて

0

この場合、1つのメソッドpublic void addMember(Member m)が必要な2つの異なるメソッドは必要ありません。 subclassインスタンスはparentクラスに継承されるため、subclassインスタンスはparentクラスに割り当てられますが、反対のクラスは割り当てられません。subclassparentクラスのプロパティを継承するためです。

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ものを除くSupporterPlayerの性質を持っていません。

これが役に立ちます。

+0

ありがとう!私はこれを知っていましたが、私の状況では、私はそれぞれのサブクラスに異なったことを区別し、行う必要がありました。私は 'instancesof'をチェックしてから、そのタイプのサブクラスを扱う別のメソッドを実行しました。似たような問題を抱えている誰かを助けることを望む – Snar3

関連する問題