对于班级" B"是否有意义?扩展" A",并掩盖其部分功能?例如,将以下代码放在我们想要在A:
中屏蔽的函数的顶部if subclass type is B
don't execute the function
else
execute the function
这是否与软件设计中继承的一般概念相矛盾?
答案 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尽可能地清楚。