Dúvida em "sobreescrita" de método

6 respostas
T

Given classes defined in two different files:

package packageA;

public class Message
{
	String getText(){ return "text"; }
}
package packageB;

public class XMLMessage extends packageA.Message
{
	String getText(){ return "<msg>text</msg>"; }

	public static void main(String...$){

		System.out.println(new XMLMessage().getText() );
	}
}

What is the result of executing XMLMessage.main ?

A) text
B) Compilation fails.
C) text
D) An exception is thrown at runtime

Pergunta 1: o método "getText()" não está sendo sobreescrito, correto?
Pergunta 2: No gabarito, está constando a alternativa B. Porém, eu compilei aqui, separando as duas classes certinho e funcionou normalmente, ou seja, imprimiu text
Será que o gabarito está errado mesmo ou em que fiz algo errado?

Obrigado.

6 Respostas

V

tb não estou vendo erro no código…
talvez a resposta esteja errada msm…
da onde vc tirou o exercicio???..

andeb

Acho que é erro do gabarito mesmo, não vejo motivos pra não compilar, e o método não está sendo sobreescrito mesmo.

evertonsilvagomesjav

Neste exemplo esta tendo sobreescriçao sim pq nao?

usa pra vc ver Message obj = new XMLMessage();

T
evertonsilvagomesjava:
Neste exemplo esta tendo sobreescriçao sim pq nao?

usa pra vc ver Message obj = new XMLMessage();

Vc quer dizer fazer algo assim?

packageA.Message m = new XMLMessage();
		
		System.out.println( m.getText() );

Aqui não compilou... Eu acho que não é sobreescrita mesmo pois o modificador de acesso do método getText() da classe Message é o default, o que significa que somente as classes do mesmo pacote terão acesso à ele. A classe XMLMessage nem enxerga ele.

evertonsilvagomesjav

Ah sim…nao reparei a questao do pacote, nao ta tendo sobreescrita mesmo. No teste q eu fiz ta tudo no mesmo pacote

Nykolas_Lima

O gabarito ta errado.

O método é default sendo assim ele só pode ser sobrescrito por classes do mesmo pacote.

Para que houve sobrescrita teria que ser public ou protected.

Sendo que o protected é parecido com o default, mas ele aceita a herança.

Abraços

Criado 13 de fevereiro de 2010
Ultima resposta 13 de fev. de 2010
Respostas 6
Participantes 5