我无法理解继承并在类中实现它。我正在尝试创建一个以Reptile类为基础的程序。
使用以下数据完成此操作的最佳方法是什么?
还将有一个菜单类,使用我认为应该是一个开关箱来选择所需的爬行动物并显示信息。
在此先感谢您的帮助。
答案 0 :(得分:1)
好的,所以我知道这是某种家庭作业,因为在现实世界中,您根本不会使用继承。
使用您发布的图片,让我尝试用我能用的最简单的术语来解释继承。
您可以想到所有爬行动物的基类-我们将其命名为Reptile
。
该课程包含所有爬行动物共有的所有不同方面-例如喜欢的食物,进食时间,食物与体重的比例等。
所有这些方面都可以编码为Reptile
类的属性。
请注意,在现实世界中,Species
和ReptileType
也是Reptile
类的属性,如果在这种情况下继承完全多余,则可以使用- ,我们还没有在谈论实际的应用程序-所以:
Snake
是Reptile
的特定类型。 Lizard
是Reptile
的另一种特定类型-因此,让我们为这两种类型创建类。
到目前为止,我们拥有Reptile
,Snake
和Lizard
类,其中最后两个继承了第一个。
接下来,Cobra
是Snake
的特定类型,Rattlesnake
也是如此。因此,让我们为它们创建从Snake
继承的类。几乎一样,BeardedLizard
是Lizard
的特定类型,而Chameleon
也是如此–因此,这里还有两个要创建的类。
所以基本上,我认为您的老师希望看到以下内容:
class Reptile {/* implementation here */}
class Snake : Reptile {/* implementation here */}
class Cobra : Snake {/* implementation here */}
class Rattlesnake: Snake {/* implementation here */}
class Lizard: Reptile {/* implementation here */}
class BeardedLizard : Lizard {/* implementation here */}
class Chameleon : Lizard {/* implementation here */}
现在,在这种情况下继承没有意义,原因是Snake
不会为Reptile
添加任何新功能,也不会为{{ 1}}。为了使继承有意义,您将需要在派生类型中添加特定于该类(及其继承者)的新功能,并且不与基类或该类的任何其他继承链共享该功能。
例如,所有蛇爬行,而所有蜥蜴行走。如果您要在Chameleon
类中添加Lizard
方法,并在Crawl()
类中添加Snake
方法,那么对于Walk()
和继承Lizard
类的Snake
类。