java - Java中的静态final方法

标签 java overriding

Java 不允许重写类的静态方法。因此,如果父类(super class)方法是静态的,则子类中的同名方法也需要是具有相同签名的静态方法才能编译,尽管它不是方法重写。下面是一个例子:

enter image description here

但我的问题是,如果这不是方法重写,那么为什么我不能将父类(super class)中的静态方法设为final?

enter image description here

最佳答案

如果你看JLS 8.4.3.3 final Methods ,您将看到 final 方法修饰符可防止方法被覆盖或隐藏

A method can be declared final to prevent subclasses from overriding or hiding it.

It is a compile-time error to attempt to override or hide a final method.

静态方法无法被重写,但可以隐藏final 修饰符可防止其被子类 static 方法隐藏。

关于java - Java中的静态final方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53257248/

相关文章:

java - 使用 == 和 != 的奇怪包装类行为

java - 监听 WritableList 中的变化

java.lang.ClassNotFoundException : com. sun.codemodel.CodeWriter 与 JDK9

c++ - 如何防止派生类中的方法被覆盖?

java - 定义(或重写)Arrays.sort 方法

java - 如何告诉 lombok 生成的 getter 是一个 @Override

java - Java 中耗时?

Java:While循环和数组递增

java - 覆盖没有别名的 spring bean,它也是父级

java - 使用 super 关键字覆盖方法