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


  编写类或接口来表示以下内容:
  
  
  可采用
  动物
  蝙蝠
  鸟
  蓝鲸
  狗
  鸸
  鱼
  金鱼
  哺乳动物
  獭
  长尾小鹦鹉
  爬虫
  龟
  WaterDweller
  鲸
  有翼的
  
  
  您需要确定类/接口的结构。考虑:
  
  哪个应该是抽象类?具体的课程?应该是
  接口?类应该如何通过继承关联?
  方法应放在哪些类中?应该采用什么方法
  覆盖?哪些信息应作为参数使用?
  哪些信息可以硬编码为类?一些额外的
  详细信息/要求:
  
  所有动物都具有返回布尔值的方法“ isWarmBlooded”。的
  方法可以直接在类中或继承。所有动物都有
  名称。所有类都有一个toString方法,该方法返回动物的
  名称,动物是否为热血动物以及所有动物的清单
  适用于动物的名称。 toString方法可以位于
  类直接或继承。可以被当作宠物的动物有
  一种方法“ getHomeCareInstructions”,该方法返回有关如何
  照顾动物生活在水中的动物(是水
  居民)具有“ livesOnLand”方法,该方法返回的布尔值
  动物是否也可以在陆地上生活。有翅膀的动物有
  一种“飞行”方法,该方法返回动物是否可以飞行的布尔值。
  分配的这一部分不一定从
  编程角度。你应该花些时间仔细
  考虑课程的设计以及它们之间的关系
  通过继承或接口


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

最佳答案

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

哪些是真正的动物?

例如鲸鱼,水獭->类

哪种动物?

例如一只鸟。 ->抽象类

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

动物的特征是什么?

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

每个类别可以有一个超类,它可以具有许多特征,例如有翼,成为水栖动物或可被采用

蝙蝠示例的另一种补充:

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

class Bat extends Mammal implements Winged{
}

关于java - Java继承层次动物类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53117364/

10-10 17:24