为什么要覆盖超类并在函数内再次调用它?

Dan*_*iel 1 java oop

我正在读一个像这样的代码,我想知道它为什么这样做:

public abstract class Class2 extends Class1 {
  ... 
  @Override
  public ObjectType someFunction() {
    ObjectType var = super.someFunction();
    .... 
    return var; 
  } 
} 
Run Code Online (Sandbox Code Playgroud)

因此someFunction()方法已被覆盖,并且在其中再次调用parent的someFunction().这对你有意义吗?这样做的动机是什么?

rge*_*man 6

如果您不想复制整个重写方法的代码,但想要稍微更改逻辑,或者如果要添加一些代码,则可以调用重写方法并提供其他代码.

这可以防止在希望覆盖方法但保留某些行为的子类中重复代码和逻辑.

正如yshavit在评论中指出的那样,调用重写方法可能是访问private超类中数据的唯一方法.