有一个设计原则,即赞成组合而不是继承,其广告的好处是它简化了设计。让我们同意这个问题作为背景。
那么,可以覆盖被弃用吗? 能我们理论上可以彻底摆脱它吗?
让我们对上面提到的设计原则有点过分热心,并将其发挥到极致:一路构图。现在应该有一个原因,覆盖滥用。
出现了一个问题:我们程序员是否会放松一些东西?是否有任何力量试图阻止一些可能的滥用?
那么,有什么应用程序可以覆盖,否则可以实现?他们应该吗?
答案 0 :(得分:0)
我总是使用多态。我似乎总是有一堆具有一些共同概念的对象以及许多对这个概念感兴趣的代码 - 也就是说,他们关心的是动物,而不是狮子和老虎和熊,甚至食肉动物。接口通常比超类更好地工作,所以我想我可以在没有子类的情况下顺利完成。 (当子类化不是时接口是否正常?)但是,我经常发现很多使用接口的类具有相同的接口方法代码。将接口更改为超类可以让我摆脱许多重复的代码。我发现自己的另一种情况是,除了一个小小的小东西外,一个庞大而复杂的课程可以满足我的需要。通过子类化,我可以创建一个新类,只需几行即可完成我所需要的。
这场辩论可能有语言成分。当我用Java编写时,我以极快的速度进行子类化。当我用C#编写时,我会在覆盖任何内容甚至使用接口之前考虑很长时间。我不确定为什么,它可能与我在这些语言中所做的工作类型有关,而不是语言本身。但是在C#中工作,我非常同情这个想法,而在Java工作时...好吧,如果我无法覆盖,我将不得不抛弃几乎所有的Java代码。