在缺乏多态性的实现中可能出现的问题是什么?

时间:2014-05-15 21:18:36

标签: polymorphism

我理解多态性意味着什么,但是如果不使用它,我很难理解出现的问题。有人可以向我解释一下吗?

1 个答案:

答案 0 :(得分:2)

基本概念是代码重用。通过接口和抽象/基类在.NET中实现多态性。假设您有Cat类,其中Speak()方法输出“MEOW!”并且说您在整个应用程序中使用此类作为类型Cat。现在,如果有一天你需要使用Dog类替换所有带有狗的猫,他们使用Speak()方法输出“WOOF!”您需要做大量的手动工作才能将Cat的所有实例替换为Dog。如果您需要一种可以让CatDog说话的方法,该怎么办?那么你需要大量的复制粘贴锅炉板冗余代码。

想象一下,您编写代码Cat : ISpeakDog : ISpeak,其中ISpeak是一个公开Speak()方法的接口。现在你根本没有返工,只要你对所有类型的声明使用接口类型,就可以愉快地在CatDog和其他可以说的东西之间切换。