Поведение окончательного статического метода

Я играл с модификаторами со статическим методом и столкнулся со странным поведением.

Как мы знаем, статические методы не могут быть переопределены, так как они связаны с классом, а не с экземпляром.

Так что, если у меня есть приведенный ниже фрагмент, он прекрасно компилируется

//Snippet 1 - Compiles fine
public class A {
    static void ts() {
    }
}

class B extends A {
    static void ts() {
    }
}

Но если я добавлю окончательный модификатор к статическому методу в классе A, то компиляция завершится неудачноts () в B не может переопределить ts () в A; переопределенный метод является статическим final.

Почему это происходит, когда статический метод не может быть переопределен вообще?

Ответы на вопрос(7)

Ваш ответ на вопрос