【发布时间】:2019-04-14 21:12:53
【问题描述】:
Java 不会让类的静态方法被覆盖。因此,如果超类方法是静态的,则在子类中,同名方法也需要是具有相同签名的静态方法才能编译,尽管它不是方法覆盖。下面是一个例子:
但我的问题是,如果这不是方法覆盖,那为什么我不能将 Super Class 中的静态方法设为 final?
【问题讨论】:
-
因为您已经将超类的 foo() 方法声明为“final”,这是“final”关键字应该做的。
-
重复项与问题无关,因为 OP 已经知道静态方法不能被覆盖并且没有询问(他在问为什么超类静态方法中的 final 修饰符阻止定义具有相同签名的静态方法的子类,该签名不是覆盖)。我正在投票重新开放。
标签: java overriding