我一直在玩静态方法的修饰符,并遇到了一个奇怪的行为.
我们知道,静态方法不能被覆盖,因为它们与类而不是实例相关联.
所以,如果我有下面的代码片段,它编译得很好
//Snippet 1 - Compiles fine
public class A {
static void ts() {
}
}
class B extends A {
static void ts() {
}
}
Run Code Online (Sandbox Code Playgroud)
但是如果我在A类中将final修饰符包含到静态方法中,则编译失败 ,B中的ts()不能覆盖A中的ts(); 重写方法是静态最终的.
当静态方法根本无法被覆盖时,为什么会发生这种情况?
我一直在学习我的软件开发课程,并从一个样本中发现了这个问题:
"为什么在Java方法前面同时使用静态和最终修饰符是没有意义的?"
我已经进行了一些研究,无论我去哪里都说这不是一种不好的做法,并且有充分的理由这样做 - 例如,这个stackoverflow问题: 声明一个最终的静态方法是一个坏主意吗?
那么,这个问题本身是荒谬的,还是对这个问题有合理的答案?
(此样本文件没有给出解决方案)
我想知道何时应该为变量和(或)方法使用static,final,static final参数.据我所知:
如果我是对的,那我就得不到一件事.在IntelliJ IDE中,当您将方法声明为public final static时,它指出应该删除final,因为已经指出了static.为什么,如何,何时???