Dúvida a respeito de sobreposição

[code]/*No livro “Certificação Java 5 Guia Preparatório …” encontra-se na página 37 a seguinte informação:
“métodos static não podem ser sobrepostos, pois são invocados pela própria class e não pelo objeto”

No entanto no código abaixo aparentemente contradiz o que o livro argumenta. Estou interpretanto errado o livro?

Desde já agradeço*/

class TesteX {
static void method() {
System.out.println(“TesteX static method”);
}
}

public class Teste extends TesteX {
static void method() {
System.out.println(“Teste static method”);
}

public static void main(String ... args) {
	method();
	new Teste().method();
}

}[/code]

Na verdade nada indica q vc esteja realizando um overload do metodo, ate porque ainda na classe, vc estendeu o metodo, mas nao realizou sobrecarga. E disso q estamos falando?

Não existe sobrescrita de metodos static.

Você pode definir dois metodos em classes diferentes com o mesmo nome,
mas são dois metodos totalmente diferentes…

Isso compila e roda normal, e ele chama o metodo da referencia.

Isso é uma pegadinha que caiu no meu exame, ainda bem que eu sabia a resposta.
Mas para quem está começando a estudar pode ser um pouco ambiguo.

Mas boa sorte na sua certificação… :wink:

Oi. Isto se chama hiding e pode ser confundido com subscricao.

Mesmo que cv faca uma chamada assim

Test meuTest = new TestX();
meuTest.metodo();

O metodo static chamado eh o da classe Test

Pois eh a mesma coisa que

Test.metodo();

Obrigado pelas respostas