难以理解继承并在类中实现它

时间:2018-10-22 06:43:49

标签: c# inheritance polymorphism

我无法理解继承并在类中实现它。我正在尝试创建一个以Reptile类为基础的程序。

使用以下数据完成此操作的最佳方法是什么?

还将有一个菜单类,使用我认为应该是一个开关箱来选择所需的爬行动物并显示信息。

在此先感谢您的帮助。

enter image description here

1 个答案:

答案 0 :(得分:1)

好的,所以我知道这是某种家庭作业,因为在现实世界中,您根本不会使用继承。

使用您发布的图片,让我尝试用我能用的最简单的术语来解释继承。

您可以想到所有爬行动物的基类-我们将其命名为Reptile
该课程包含所有爬行动物共有的所有不同方面-例如喜欢的食物,进食时间,食物与体重的比例等。
所有这些方面都可以编码为Reptile类的属性。

请注意,在现实世界中,SpeciesReptileType也是Reptile类的属性,如果在这种情况下继承完全多余,则可以使用- ,我们还没有在谈论实际的应用程序-所以:

SnakeReptile的特定类型。 LizardReptile的另一种特定类型-因此,让我们为这两种类型创建类。 到目前为止,我们拥有ReptileSnakeLizard类,其中最后两个继承了第一个。
接下来,CobraSnake的特定类型,Rattlesnake也是如此。因此,让我们为它们创建从Snake继承的类。几乎一样,BeardedLizardLizard的特定类型,而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类。