java创建从不同类继承的对象的ArrayList

时间:2012-07-27 17:27:16

标签: java inheritance arraylist

我很困惑。
我创建了一个抽象类'Person'然后我从Person扩展了'Part-Time Employee'类。 然后我从Person中扩展一个名为“全职员工”的抽象类 然后我创建了两个名为“新全职员工”和“终身全职员工”的新班级,这两个班级都来自全职员工。

我想跟踪ArrayList中的所有员工......这就是我在概念上被困住的地方。我创建了一个名为Database的类,它从ArrayList扩展而来。

如何确保数组可以容纳我需要的所有3个类?我是否创建Abstract类的数组?这让我觉得我无法访问我在继承类中定义的方法...我还读到从ArrayList扩展是不好的做法...所以创建一个是有意义的带有ArrayList的数据库类?那还能让我访问我在线下定义的所有内容吗?

如果我想显示整个列表,那么它将如何知道要使用哪个显示功能? tenuredFullTimeEmployee's或NewFullTimeEmployee's?

谢谢!

1 个答案:

答案 0 :(得分:0)

你有一些选择。如果类只在行为上有所不同,那么您可以使用策略模式。如果您确实需要在List对象中保留不同类型的对象,然后根据该类型执行不同的操作,则可以使用访问者模式。我的猜测是你应该放弃一些继承,并采取类似于策略的方法来抽象出不同类的行为。

http://www.oodesign.com/strategy-pattern.html

http://www.oodesign.com/visitor-pattern.html

要回答你的第二个问题,你是对的...而不是扩展ArrayList,你应该有像

这样的东西
List<Person> people = new ArrayList<Person>();

然后使用上面两种建议模式之一,您可以处理不同的行为。