【问题标题】:Prevent child class from overriding a method in parent防止子类覆盖父类中的方法
【发布时间】:2016-09-13 05:24:26
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 是的,这就是 final 的用途......当应用于方法时,这就是它在生活中的唯一目的。

标签: java overriding final


【解决方案1】:

是的,这正是 java 为方法使用 final 修饰符的原因。

【讨论】:

    【解决方案2】:

    是的...看看文档...

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

    final 方法的想法是阻止从子类覆盖它...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-18
      • 2017-08-27
      • 2010-09-06
      • 2011-04-17
      • 2012-10-12
      • 1970-01-01
      • 2017-11-11
      相关资源
      最近更新 更多