在Java中使用继承时如何避免重用代码?

Jef*_*eff 2 java inheritance

假设有一个类的方法非常接近你想要的方法 - 只需要改变方法中的一行.如果不允许更改超类,是否有任何方法可以从超类继承而不复制要更改的方法中的所有代码?

Nec*_*aux 5

简答:不

答案很长:可能在某些情况下

例如,如果a()我可以在最后处理额外行为,那么您可以在新类中调用它,然后添加其他行为.

@Override
public void a() {
    super.a();
    //  do something else here
}
Run Code Online (Sandbox Code Playgroud)

如果中间有一条线super.a()无法执行那么你运气不好.如果可以在事后"清理"不希望的行为,那么这是可能的.

  • 这取决于变化的性质.这可能不适用于您的具体情况(我们无法确定无法查看代码),但通常可以撤消操作. (2认同)