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??
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;
}
}
[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;
}
}
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…
[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
[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]
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.
[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…
[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.