Livro SCJP - Portugues - Está correto isso?

No Java 5 voce tem a possibilidade de trocar o retorno de métodos sobrescritos, desde que o novo tipo seja um subtipo do tipo de retorno declarado no método subscrito (superclasse).

EX:

public class Foo(){
void go() {}
}

public class Bar extends Foo(){
String go(){
return null;
}
}

Este exemplo está correto? Isto quer dizer que Strinh é um subtipo de void?
Quer dizer q void é um tipo??

Bom espero q possam me ajudar

Está incorreto. void não é uma classe, portanto não pode existir uma “Subclasse” de void. “void” indica que não há retorno. Portanto, seu exemplo está incorreto.
Um exemplo correto seria:

public class Foo(){ 
  Object go() {} 
} 

public class Bar extends Foo(){ 
  String go(){ 
    return null; 
  } 
} 

blz? isso porque String extends Object.

Falou,

Armando

[quote=armando]Está incorreto. void não é uma classe, portanto não pode existir uma “Subclasse” de void. “void” indica que não há retorno. Portanto, seu exemplo está incorreto.
Um exemplo correto seria:

public class Foo(){ 
  Object go() {} 
} 

public class Bar extends Foo(){ 
  String go(){ 
    return null; 
  } 
} 

blz? isso porque String extends Object.

Falou,

Armando[/quote]

Bom… tudo em Java extend de Object rs :smiley:

Na verdade isto é um exemplo retirado do SCJP do kathy sierra…!!! Em portugues… Procurei na errata do livro e nao vi esse erro…

ENFIM! TOU MT PUTO COM ESSE LIVRO! UMA MERD@ CHEIA DE ERRATA…
NAO RECOMENDO EM PORTUGUES!

assim nao conseguir ver o erro ai… ele apenas nao criou um novo metodo com um tipo de retorno como void nao retorna a nada… ai eu tenho dois metodos com o mesmo nome porem com tipos diferentes… e vi tb que tudo que Foo faz Bar tb faz… tive essa visao…

Ele queria mostrar a subscrição de metodos… com retornos covariantes…!

[quote=pedrorjbr]Na verdade isto é um exemplo retirado do SCJP do kathy sierra…!!! Em portugues… Procurei na errata do livro e nao vi esse erro…
[/quote]

Oi Pedro, tenho este livro, poderia dizer em que pagina encontro este código?
Gostaria de ver em qual contexto ele esta inserido.

Isso vai gerar um erro de compilação porque a assinatura do método é a mesma

[]'s

[quote=XandSu][quote=pedrorjbr]Na verdade isto é um exemplo retirado do SCJP do kathy sierra…!!! Em portugues… Procurei na errata do livro e nao vi esse erro…
[/quote]

Oi Pedro, tenho este livro, poderia dizer em que pagina encontro este código?
Gostaria de ver em qual contexto ele esta inserido.

Isso vai gerar um erro de compilação porque a assinatura do método é a mesma

[]'s[/quote]

Bom nao estou com o livro aki… mas se nao me engano a pagina é 71 ou 73… nao sei ao certo

[quote=pedrorjbr]
Bom nao estou com o livro aki… mas se nao me engano a pagina é 71 ou 73… nao sei ao certo[/quote]

Então, também não estou com o livro, chegando em casa vou olhar.

Qual edição você tem?

Estou com a segunda edição. Não li o livro todo, estou no capítulo 2 e até o momento, a tradução excelente.

[]'s

[quote=XandSu][quote=pedrorjbr]
Bom nao estou com o livro aki… mas se nao me engano a pagina é 71 ou 73… nao sei ao certo[/quote]

Então, também não estou com o livro, chegando em casa vou olhar.

Qual edição você tem?

Estou com a segunda edição. Não li o livro todo, estou no capítulo 2 e até o momento, a tradução excelente.

[]'s[/quote]

A minha ed. é a primeira… A segunda me disseram q está boa

se o codigo esta assim, realmente esta errado.

ps: apesar de void nao ser classe, Void é :slight_smile:

[quote=pedrorjbr]
A minha ed. é a primeira… A segunda me disseram q está boa[/quote]

Você ja viu essa Thread, a editora esta trocando para quem não estiver satisfeito com a primeira edição.

No entanto, esse código continua errado na segunda edição. eles acabaram replicando o exemplo anterior que tratava da sobrecarga e tinha esse código mostrando que não é possível alterar apenas o tipo de retorno e manter a assinatura do método.

[]'s

[quote=Paulo Silveira]se o codigo esta assim, realmente esta errado.

ps: apesar de void nao ser classe, Void é :)[/quote]

E não muito satisfeito
o javadoc do Void o chama void de tipo primitivo, onde eu somente achava que era uma palavra chave pra metodos sem retorno.

/** * The Class object representing the primitive Java type void. */ public static final Class TYPE = Class.getPrimitiveClass("void");

[quote=armando]Está incorreto. void não é uma classe, portanto não pode existir uma “Subclasse” de void. “void” indica que não há retorno. Portanto, seu exemplo está incorreto.
Um exemplo correto seria:

public class Foo(){ 
  Object go() {} 
} 

public class Bar extends Foo(){ 
  String go(){ 
    return null; 
  } 
} 

blz? isso porque String extends Object.

Falou,

Armando[/quote]

Isso é uma falha na tradução, olhei na versão em inglês do livro e o exemplo é exatamente esse que o Armando postou…

T+

No livro em inglês o código é o seguinte

class Alpha {
Alpha doStuff(char c) {
return new Alpha();
}
}

class Beta extends Alpha {
Beta doStuff(char c) { // legal override in Java 1.5
return new Beta();
}
}

[quote=diego2005][quote=armando]Está incorreto. void não é uma classe, portanto não pode existir uma “Subclasse” de void. “void” indica que não há retorno. Portanto, seu exemplo está incorreto.
Um exemplo correto seria:

public class Foo(){ 
  Object go() { return null; } 
} 

public class Bar extends Foo(){ 
  String go(){ 
    return null; 
  } 
} 

blz? isso porque String extends Object.

Falou,

Armando[/quote]

Isso é uma falha na tradução, olhei na versão em inglês do livro e o exemplo é exatamente esse que o Armando postou…

T+[/quote]

Olá. realmente está incorreto! O Correto é como eu quotei mesmo! O Erro se encontra na página: 75, sobre o tópico: A subscricao e os tipos de retorno; e retornos covariantes.

Até