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

두 가지 방법이 필요하지 않은 경우 하나의 방법이 필요합니다. public void addMember(Member m). subclass 인스턴스를 parent 클래스에 할당 할 수 있지만 subclassparent 클래스의 속성을 상속하므로 반대가 아닙니다.

제거 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

관련 문제