java在不同的类中访问arraylist?
Member
类=超级类SeniorMember
类=子类JuniorMember
类=子类
是否可以在不同的类中使用相同的arraylist来存储成员
“Committee类”具有仅可添加和删除seniormember的arraylist
“Society类”具有用于存储所有成员的arraylist,以及添加和删除seniormember和juniormember
它们可以共享同一个arraylist吗?怎么做的
import java.util.*;
public class ManagementCommittee{
private ArrayList<SeniorMember> smlist;
public ManagementCommittee(){
smlist = new ArrayList<SeniorMember>();
}
public void addCommitteeMember(SeniorMember sm){
smlist.add(sm);
}
public SeniorMember search(String smName){
for (SeniorMember sm : smlist){
if ((sm.getName()).equals(smName)){
return sm;
}
}
return null;
}
public boolean removeCommitteeMember(String smName){
SeniorMember tmp = search(smName);
if (tmp != null)
return smlist.remove(tmp);
else
return false;
}
public String toString(){
for (SeniorMember sm : smlist){
return "Name : " + sm.getName() + "\nAddress : " + sm.getAddress() + "\nFee : " + sm.getFee();
}
}
}
我应该如何为社会阶层写作,以便在这个委员会成员阶层中使用相同的arraylist
# 1 楼答案
我会用ArrayList建立你的社会课。然后创建一个委员会类,该类以社会使用ArrayList的方式使用社会。要获得委员会成员的名单,您可以从Society(从ArrayList获得)获得完整的名单,并且只保留委员会成员。添加委员会成员意味着确保其在社会实例中,如果必要,添加它,然后获得它并将其标记为委员会成员。这里有点忙,但很简单。此外,您可能希望Society和Committee类实现相同的接口,这样代码的其他部分就不需要知道它们是否与委员会成员、普通成员甚至其他一些团体打交道(但这确实实现了接口)
如果这是一个非常大的社会,您可能希望保留一个单独的委员会成员列表,但它需要同步。例如,一个委员会实例需要在其Society接口中添加一个侦听器,以捕获所有删除(如果一个是委员会成员)。我想你现在不想为此烦恼
# 2 楼答案
超类中的静态arraylist
# 3 楼答案
如果我理解正确的话,那么您正在实现一个类来包装一个集合,并且您希望对其中一个集合处理方法进行阴影处理。在这种情况下,应该是这样的:
请注意,如果重写方法
add
以接受SpecialMember
,则仍然会公开超类add(Member)
版本