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

Java中的静态final方法[duplicate]

颜文康
2023-03-14

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

但我的问题是,所以如果这不是方法重写,那么为什么我不能使超级类中的静态方法final?

共有1个答案

南宫凯康
2023-03-14

如果查看JLS 8.4.3.3 final method,您将看到final方法修饰符防止方法被覆盖或隐藏。

方法可以声明为final以防止子类重写或隐藏它。

试图重写或隐藏最终方法是一个编译时错误。

不能重写static方法,但可以隐藏该方法。final修饰符防止它被子类static方法隐藏。

 类似资料:
  • 我为之编写的测试用例: 我还有最后一节课。 我已经在测试类中添加了以下代码: 但对我来说什么都不起作用。请建议在类中模仿方法的正确方法。

  • 问题内容: 尝试在静态类中调用非静态方法时遇到错误。 无法从类型播放中静态引用非静态方法methodName() 我不能使该方法静态,因为这也给我一个错误。 此静态方法无法从xInterface隐藏实例方法 有什么办法可以在另一个静态方法中轮回调用非静态方法?(这两种方法位于单独的包和单独的类中)。 问题答案: 从静态方法中调用非静态方法的唯一方法是使类的实例包含非静态方法。根据定义,非静态方法是

  • 为什么输出是"静态A"?

  • 此具有方法 我迷路了...有人能解释一下吗

  • 我的问题与这个问题基本相同,但这也适用于函数吗? 我想明白: 编译器是否将类中的所有函数视为? 在类中的函数中添加关键字是否有任何影响?

  • final:类似于C++中的const参数。这基本上意味着值(或方法中返回的值)不会改变。 静态:表示值(或方法)不直接赋给某个对象--因此您可以在其他类中使用静态变量(或方法),而无需创建对象 final static:这种组合是否意味着您有变量(或方法),您可以在不创建对象(static)的情况下访问它,并且您不能更改它的值(就像在C++常量中)(final) 如果我是对的,比我没有得到一件事