Errata no livro da Kathy sobre subscrita de método?

Olá a todos, estou estudando o livro da kathy pra certificação SCJP, e no capítulo 2, na página 75 que fala sobre subscrita de métodos o livro diz que é possível subscrever um método da seguinte maneira com o java 1.5:

public class Foo {
  void go() {}
}

public class Bar extends Foo {
  String go() {} //subscrição válida em Java 1.5
}

Ou seja trocar o tipo de retorno, do método subscrito, desde que o tipo de retorno possar ser convertido implicitamente para o retorno declarado.
Mas eu tentei compilar este exemplo aqui, com o javac 1.6, e deu falha na compilação, gerando o erro:" tipo de dados incompatíveis".
Isso é um erro do livro, ou entendi algo errado??

Att

Acho que é erro do livro quando vc coloca

String go(){} // assim não compila mesmo… pois o compilador vai reclamar mesmo…

<- o metodo tem que ter retorno so não tem retorno de nada quando o metodo é declarado como void.

void não tem retorno… =) logo vc não pode trocar o tipo de retorno =)

alguns exemplinhos: adicionei retorno de covariantes =)

public interface Teste2 {

}


class Foo{
	public Foo go() {
		return new Foo();
	}
}

class Bar extends Foo {
	public Foo go(){ // subscrição válida em Java 1.5
	return new Bar();  
	} 
}

class Bar2 extends Bar {
	public Bar go(){// subscrição válida em Java 1.5
	return null;  
	} 
}

class bonavides extends Bar{
	public Foo go(){
		return new bonavides();
	}
}

Fique tranquilo, vc está certo quem está errado é o livro mesmo, eu tb tinha detectado esse problema. Espere por mais algumas coisinhas desse tipo nesse livro. A medida que vamos entendendo o assunto esses errinhos saltam os olhos, portanto não comprometerão os estudos, no máximo teremos mais alguns neurônios queimados :slight_smile:

Valeu pessoal, agora sim ficou claro!!

Att

é amigo, de fato com relação ao exemplo, o livro está errado, mas com relação aos tipos de retornos covariantes ele está certo, a partir do java 1.5 você pode sobrescrever um método tendo como retorno um subtipo do tipo de retorno declarado no método sobrescrito.

estou na msm parte que vc vá ate a pagina 64 e veja a tabela acima que fala sobre as regras neste caso diz que nao é overreading nem overloard por causa que nao ouve mudança nos argumentos e o tipo de retorno porem como o colega disse acima é possivel por covariante dito isso na página 75 porem o comentário é claro somente versao 1.5, na minha humilde opniao e bom senco na página ela diz que isso cai no exame algumas questoes com essa suposta “pegadinha” quem sou eu par duvidar dela,vou testar com mais calma
abs.