Instanciação de classe Abstrata/Interface

2 respostas
B

Olá pessoal. Estou com uma dúvida sobre classes abstratas e interfaces, dei uma “cavada” por aí e não consegui achar uma explicação.
É o seguinte, classes abstratas e interfaces não podem ser instanciadas, a tentativa gera um erro de compilação, ok.

Contudo me deparei com um exemplo parecido com este:

Veiculo objeto = new Veiculo(){
	public void mover (){
		System.out.println ("Teste");
	}
};

Onde Veiculo é uma classe Abstrata ou Interface e mover é um método abstrato. Esse exemplo compila perfeitamente, só não consegui entender completamente oque acontece aí, como nesse caso a instanciação de um objeto abstrato/interface é permitido?
Agradeço se alguém puder me dar uma luz aqui :idea:

2 Respostas

davidbuzatto

O código é valido pois você está na verdade definindo uma classe concreta anônima que herda de veículo (olhe as chaves) e ao mesmo tempo que a define, você está instanciando a mesma (operador new). Veja o .class que foram compilados.

[]'s

B

davidbuzatto:
O código é valido pois você está na verdade definindo uma classe concreta anônima que herda de veículo (olhe as chaves) e ao mesmo tempo que a define, você está instanciando a mesma (operador new). Veja o .class que foram compilados.

[]'s

Realmente, quando eu compilo a classe ela cria uma nova .class, não tinha reparado nisso.
Muito obrigado pela resposta.

Criado 29 de fevereiro de 2012
Ultima resposta 29 de fev. de 2012
Respostas 2
Participantes 2