当前位置: 首页 > 知识库问答 >
问题:

防止子类重写父类中的方法

田冥夜
2023-03-14

我有一个主类RecordFieldBase。应用程序中有许多子类是从RecordFieldBase类扩展而来的。baseRecordFieldBase类公开公共方法updateInspector,如下所示:

public Inspector udpateInspector {
  if () {
    return this.getBasicInspector();
  } else {
    return this.getValidationInspector();
  }
}

应用程序将在子RecordField实例上调用updateExctor以获得一个检查器实例。每个子类都可以有自定义的基本检查器和验证检查器。他们可以使用getBasic检视器getValidation检视器方法实现它,但是他们不能覆盖基类的update检视器,因为它包含处理逻辑。

在这里使用final关键字合适吗?

public final Inspector udpateInspector {
  if (some check here) {
    return this.getBasicInspector();
  } else {
    return this.getValidationInspector();
  }
}

共有2个答案

万俟嘉珍
2023-03-14

对看看医生。。。

https://docs.oracle.com/javase/tutorial/java/IandI/final.html

final方法的思想是阻止从子类重写它。。。

郎鸿雪
2023-03-14

是的,这正是java对方法有最终修饰符的原因。

 类似资料:
  • 为什么我的子类方法不重写其父类中相同签名的方法? 我有一个类,它扩展了一个抽象类,后者扩展了抽象类Actor(这里的上下文是一个pong游戏)。和都有一个具有相同签名的方法: 目的是让方法重写的方法。这里的问题是,当我在内部调用时,只调用的方法。 在中的上设置的断点会脱扣,而在中的上设置的断点从不脱扣。我还在方法上尝试了,但它仍然调用方法。 目标是让对象以与其他对象不同的速度上下移动。因此方法也会

  • 这似乎是一件奇怪的事情,但是在Java中有没有办法阻止子类添加新方法(包括构造函数),同时仍然允许子类重写方法? 实际情况是,我们有一个带有一些抽象方法和构造函数的

  • 主要内容:如何调用被重写的方法前面讲过在 Python 中,子类继承了父类,那么子类就拥有了父类所有的类属性和类方法。通常情况下,子类会在此基础上,扩展一些新的类属性和类方法。 但凡事都有例外,我们可能会遇到这样一种情况,即子类从父类继承得来的类方法中,大部分是适合子类使用的,但有个别的类方法,并不能直接照搬父类的,如果不对这部分类方法进行修改,子类对象无法使用。针对这种情况,我们就需要在子类中重复父类的方法。 举个例子,鸟通

  • 阻止子类重写 final 可以通过标记为final来阻止一个方法、属性或者下标脚本被重写. 通过在方法、属性或者下标脚本的关键字前写final修饰符(比如final var, final func, final class func, final subscript) 此时由于加上了final修饰, 此方法不允许子类重写

  • 是否有一种方法可以防止重写我在映射器类中为其提供了实现的特定方法? null 我的映射器类如下所示: 然后,Mapstruct生成如下所示的实现:

  • 问题内容: 我在扩展基类并覆盖基类中的方法。但是当我称它为超类版本时。如何覆盖该方法? 我希望它打印“这是:孩子”,但它打印“这是:超级” 问题答案: 我找到了答案(从这里改编:https : //gist.github.com/Zodiase/af44115098b20d69c531)-基类也需要以ES6方式定义: