如何解决Java OOP-简单示例中的建模问题多态组成还是继承?
我正在尝试用Java(OOP)为某些系统建模,但是我将使用一个更简单的示例来说明我所遇到的问题(我认为这与多态和/或继承有关)。尽管我感觉解决方案可能与合成有关。
简单地说,我们有动物,物种,鸟和鸽子。我目前的恋情是:
- 鸽子实施/扩展了动物,鸟(鸽子是动物和鸟类)
- 鸟类实现/扩展了物种(鸟类是物种)
请记住,此设计应该可扩展以包含更多的动物和物种。
我要执行以下操作:
- 对于
List<Animal>
,我希望只能添加Pigeon
(和其他动物),而不能添加Species
或Bird
。这很满意。 - 对于
List<Bird>
,我只想添加Pigeon
(和其他鸟)。这很满意。 - 但是,对于一个
List<Species>
,我只想添加Bird
(和其他种类);但是,通过这种设计的多态性,我也可以添加Pigeon
,这是不希望的(我希望 Pigeon 不是物种(在此示例中)。
我从来没有完全理解这一点,但是我相信这会涉及到我所听到的关于继承的问题。我希望我已经对示例进行了足够详细的解释,但是如果有人对如何建模(使用抽象类,接口,组成,设计模式等任何东西)有任何建议,将不胜感激!>
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。