在扩展超级功能时屏蔽超级功能

时间:2017-05-02 22:38:33

标签: java inheritance architecture

对于班级" B"是否有意义?扩展" A",并掩盖其部分功能?例如,将以下代码放在我们想要在A:

中屏蔽的函数的顶部
if subclass type is B
  don't execute the function
else 
  execute the function 

这是否与软件设计中继承的一般概念相矛盾?

1 个答案:

答案 0 :(得分:1)

我认为做这样的事情会是一个设计错误。不是说它不会起作用,如果你有B扩展A并且你不希望B执行某些A函数,只需覆盖它们并让它们清空。

class A {
function myFunction() { do some stuffs and forbidden to be executed by B}
}
class B extends A {
@Override
function myFunction() {}
}

但我仍然认为这不是一件非常干净的事情。 我总是这样:如果你需要一些不能由B执行的函数,只需创建一个扩展A的子类C,让A尽可能地清楚。