java - 为什么要覆盖父类(super class)并在函数内部再次调用它?

标签 java oop

我正在阅读一段代码,它是这样完成的,我想了解它为什么这样做:

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

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

最佳答案

如果你不想复制整个被覆盖方法的代码,但你想稍微改变一下逻辑或者你想添加一点代码,那么你可以调用被覆盖的方法并提供附加代码。

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

正如 yshavit 在评论中指出的那样,调用重写方法可能是访问父类(super class)中 private 数据的唯一方法。

关于java - 为什么要覆盖父类(super class)并在函数内部再次调用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28199325/

相关文章:

java - IOException 在 http 错误代码返回时在客户端捕获

c# - 阻止访问私有(private)成员变量?强制使用公共(public)属性(property)?

c++ - 对于可以具有不同状态的结构,我应该使用哪种设计模式?

java - 通过 JAXB 解码 XML

java - 如何在字符串中找到空格?

java - 为两个扩展 super 的类制作比较器

java - 通过子类引用使用基类对象 - java

java - 关于类中类的 OOP 相关问题

java - 如何在 OOP 中实现图形层次结构

java - 如何发布使用 GSON 解析大型 json 文件的进度