Java中的静态final方法

Java中的静态final方法,java,overriding,Java,Overriding,Java不允许重写类的静态方法。所以,若一个超类方法是静态的,在子类中,同名方法也需要是静态的,具有相同的签名才能编译,尽管它不是一个重写方法。以下是一个例子: 但我的问题是,如果这不是方法重写,那么为什么我不能使超类中的静态方法成为final 如果查看,您将看到final方法修饰符阻止方法被覆盖或隐藏 方法可以声明为final,以防止子类重写或隐藏它 试图覆盖或隐藏最终方法是编译时错误 不能重写静态方法,但它可以隐藏。final修饰符防止它被子类static方法隐藏。因为您已经将您的超类的f

Java不允许重写类的静态方法。所以,若一个超类方法是静态的,在子类中,同名方法也需要是静态的,具有相同的签名才能编译,尽管它不是一个重写方法。以下是一个例子:

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

如果查看,您将看到
final
方法修饰符阻止方法被覆盖或隐藏

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

试图覆盖或隐藏最终方法是编译时错误


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

因为您已经将您的超类的foo()方法声明为“final”,这就是“final”关键字应该做的。重复项与问题无关,因为OP已经知道静态方法不能被重写,并且没有问这个问题(他问的是为什么超类静态方法中的最后一个修饰符阻止子类定义具有相同签名的静态方法,而这个签名不是重写的)。我投票赞成重新打开。感谢@Eran正确地理解了我想说的要点,你的回答帮助我非常准确地理解了方法隐藏。嗨,我也在尝试理解,在这种情况下,我们使用静态最终两者,因为两者都不能被覆盖。。。隐藏在这里是什么意思?由于功能是公开的,如何隐藏它