Novo erro no livro da Kathy

No capítulo sobre tipos de retorno aparece o seguinte cógigo:

[code]class Foo{
void go(){

            }

}

public class Bar extends Foo{
String go(){ // sobrescrição válida em Java 1.5
return null;
}
}[/code]

Coloquei o código no Eclipse, e como era de se esperar, deu erro de compilação, esse código não compila nem em 1.3, 1.4, 1.5, 1.6… nada, pois String não é um subtipo de void!!! Acho q o livro quis mostrar um retorno covariante como o seguinte:

[code]class Foo{
Object go(){ // substituí o void pelo Object
return null;
}
}

public class Bar extends Foo{
String go(){ // sobrescrição válida em Java 1.5 pois String é um subtipo de Object
return null;
}
}[/code]

Estou estou certa, ou o primeiro código realmente deveria compilar?

De fato, o livro está errado, e isso foi anotado em uma errata que foi lançada posteriormente. Aqui no GUJ já foi comentado esse caso.

É verdade,
esse override não funciona nesse caso…

Pergutna - você está lendo o livro em portuguê?

Porque você iria achar muitos erros…

http://www.guj.com.br/posts/list/87554.java

estou lendo em portugues sim…

Assim fica difícil estudar, pq a gente corre o risco de aprender coisa errada.

[quote=Cris Finholdt]estou lendo em portugues sim…

Assim fica difícil estudar, pq a gente corre o risco de aprender coisa errada. [/quote]

Sempre corre esse risco, raramente existe um livro traduzido corretamente para nossa língua mãe, mais aconselho você a se guiar por livros em inglês, já que a maioria dos ótimos livros da nossa linguagem e de outras também não são traduzidos para nossa língua, se você tiver um curso de inglês na bagagem ou um inglês técnico já é suficiente para leitura da maioria dos livros ingleses, sobre o livro da kathy o 1.5 tem muitos erros aonde o tradutor pensou que era programador e saiu lançando códigos sem sentido algum, a 1.6 acabou de ser lançada no mercado então acredito que ira ter muitos erros ainda já que se encontra na primeira versão. Compre o livro em inglês e seja feliz, se não vai ter que ficar corrigindo sempre as burradas dos tradutores…

Bem vinda hehehe

estou estuando com a versão em portugues, com uma em ingles ao aberta 100% do tempo, ao minimo sinal de incoerencia vejo a versão americana, e tiro a prova dos 9 ^^

Ta foda… comprei o livro e to perdendo bastante tempo corrigindo erros…

Estudar para a prova por material traduzido e de baixa qualidade, compromete de forma significativa o entendimento dos conceitos cobrados em cada tópico.

Você pode baixar o material para estudo nosite: http://www.4shared.com
Pesquise por SCJP 6.0 (os arquivos estão todos em formato pdf).
Um abraço, boa sorte; :wink:

Me corrijam se estiver errado, mas mudar o tipo do retorno já não é sobrecarga de método?

[code]class Foo{
void go(){ }
}

public class Bar extends Foo{
String go(){ // Pra isso aqui funcionar, teria que adicionar um argumento
return null;
}
}[/code]

Se vc fizer

[code]class Foo{
void go(){ }
}

public class Bar extends Foo{
void go(){ }
}[/code]

É válido. Isso é sobrescrever.