Поведение окончательного статического метода
Я играл с модификаторами со статическим методом и столкнулся со странным поведением.
Как мы знаем, статические методы не могут быть переопределены, так как они связаны с классом, а не с экземпляром.
Так что, если у меня есть приведенный ниже фрагмент, он прекрасно компилируется
//Snippet 1 - Compiles fine
public class A {
static void ts() {
}
}
class B extends A {
static void ts() {
}
}
Но если я добавлю окончательный модификатор к статическому методу в классе A, то компиляция завершится неудачноts () в B не может переопределить ts () в A; переопределенный метод является статическим final.
Почему это происходит, когда статический метод не может быть переопределен вообще?