Java继承层次结构动物类

时间:2018-11-02 11:03:10

标签: java inheritance polymorphism multiple-inheritance

在我的java项目中,我应该具有动物的层次结构,但是我对应该扩展什么感到困惑。 以下是说明:

  

编写类或接口以表示以下内容:

     
      
  • 可采用
  •   
  • 动物
  •   
  • 蝙蝠
  •   
  •   
  • BlueWhale
  •   
  •   
  • E
  •   
  •   
  • 金鱼
  •   
  • 哺乳动物
  •   
  • 水獭
  •   
  • 长尾小鹦鹉
  •   
  • 爬行动物
  •   
  • 乌龟
  •   
  • WaterDweller
  •   
  • 鲸鱼
  •   
  • 双翼
  •   
     

您需要确定类/接口的结构。考虑:

     

哪个应该是抽象类?具体的课程?应该是   接口?类应该如何通过继承关联?   方法应放在哪些类中?应该采用什么方法   覆盖?哪些信息应作为参数使用?   哪些信息可以硬编码为类?一些额外的   详细信息/要求:

     

所有动物都具有返回布尔值的方法“ isWarmBlooded”。的   方法可以直接在类中或继承。所有动物都有   名称。所有类都有一个toString方法,该方法返回动物的   名称,动物是否为热血动物以及所有动物的清单   适用于动物的名称。 toString方法可以位于   类直接或继承。可以被当作宠物的动物有   一种方法“ getHomeCareInstructions”,该方法返回有关如何   照顾动物生活在水中的动物(是水   居民)具有“ livesOnLand”方法,该方法返回的布尔值   动物是否也可以在陆地上生活。有翅膀的动物有   一种“飞行”方法,该方法返回动物是否可以飞行的布尔值。   分配的这一部分不一定从   编程角度。你应该花些时间仔细   考虑课程的设计以及它们之间的关系   通过继承或接口

我不确定如何设计它,因为我知道有翅膀的鸟,但是蝙蝠也有。因此,蝙蝠会伸出翅膀,但是蝙蝠也是哺乳动物。我不可能有翅膀的哺乳动物,因为鸟类不是哺乳动物。而且,鲸鱼和水獭是垃圾居民,但也是水栖动物。我不能让水栖动物扩展哺乳动物(因为鲸鱼/水獭是哺乳动物),但是鱼不是哺乳动物,而是水栖动物。我如何使蝙蝠既有翅膀又有哺乳动物?编程是容易的部分,只是在与项目的结构作斗争。我该如何构造它才能起作用?

1 个答案:

答案 0 :(得分:3)

因此在建模中,您必须考虑:

哪些是实际动物?

例如鲸鱼,水獭->类

是动物的类型

例如一只鸟。 ->抽象类

因为每个e都是鸟。
这称为Liskov替代原则https://en.wikipedia.org/wiki/Liskov_substitution_principle

动物的特征是什么?

例如WaterDweller,Winged->这些是接口。

每个阶级都可以有一个超阶级,它可以具有许多特性,例如有翼,成为水栖动物或可被采用

您的蝙蝠示例有一个附加内容:

它是哺乳动物->因此,它的超类是哺乳动物。它是带翅膀的-这是一个特性-因此它实现了带翅膀的界面。

class Bat extends Mammal implements Winged{
}