【问题标题】:final class with final static methods redundant [duplicate]具有最终静态方法的最终类冗余[重复]
【发布时间】:2021-05-10 16:20:15
【问题描述】:

我在一个 final 类中有一堆静态 final 方法:

public class final Util{

    private Util{}

    // do I need the keyword final when the class is already final
    public static final util1{..}
    public static final util2{..}
    public static final util3{..}

}

我知道,实例方法在其类为 final 时隐式为 final。但是,静态方法也是如此吗?

【问题讨论】:

  • 静态方法总是最终的(你不能在子类中覆盖它们)
  • 静态方法(没有final)可以被覆盖(可以隐藏)。静态方法是final还是非final是有区别的。
  • 我的立场是正确的。我不知道这个事实。谢谢! (stackoverflow.com/q/1743715/112968)
  • 嗨,是的,它们也是最终的

标签: java static-methods


【解决方案1】:

final类一开始就不能扩展,所以它们的方法是否标记为final无关紧要。

例如,这将失败:

final class Util {
}
class Extra extends Util {
}

错误:无法从 final Util 继承
类 Extra 扩展 Util {

【讨论】:

  • 静态方法(没有final)可以被覆盖(可以隐藏)。静态方法是final还是非final是有区别的
  • @nimo23 但是你不能扩展这个类,所以没有地方可以“隐藏”它们。您永远无法产生冲突,因为最终类不能有子类。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-14
  • 1970-01-01
  • 2017-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-02
相关资源
最近更新 更多