Dúvida a respeito de sobreposição

4 respostas
deyvid
/*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();
	}
}

4 Respostas

airmigjr

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?

johnny_quest

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:

D

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();
deyvid

Obrigado pelas respostas

Criado 26 de novembro de 2010
Ultima resposta 27 de nov. de 2010
Respostas 4
Participantes 4