【发布时间】:2014-06-16 06:55:08
【问题描述】:
最近有人问我这个问题“为什么要覆盖一个方法?”
我回答说,如果我有一个包含 10 个方法的类,并且我想使用它的所有功能,除了一个方法,那么我将覆盖该方法以拥有我自己的功能。
然后面试官回答在那种情况下为什么我们不能用不同的名称编写一个新方法并使用该方法来代替。
是的,这也是正确的。现在我很困惑。重写方法的真正目的是什么?
谁能告诉我?谢谢大家。
【问题讨论】:
-
想到继承...
-
好吧,告诉你的面试官应该总是针对接口而不是实现进行编码:)
-
更改实现。使其更具体到子类。
-
覆盖已经实现的方法通常是破坏 Liskov 替换原则的根本原因(非常糟糕的设计)。一般来说,我们“覆盖”/(实现更合适的词)一个接口/抽象方法。
-
我知道这是在开玩笑,但它根本没有解决问题。
标签: java oop overriding