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??
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
é 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.