Comportamento do método estático final
Eu tenho brincado com modificadores com método estático e me deparei com um comportamento estranho.
Como sabemos, os métodos estáticos não podem ser substituídos, pois estão associados à classe e não à instância.
Então, se eu tenho o trecho abaixo, ele compila bem
//Snippet 1 - Compiles fine
public class A {
static void ts() {
}
}
class B extends A {
static void ts() {
}
}
Mas se eu incluir o modificador final para o método estático na classe A, a compilação falharáts () em B não pode sobrescrever ts () em A; método substituído é final estático.
Por que isso acontece quando o método estático não pode ser substituído?