Tipos de Retorno em Métodos Sobrecarregados
Métodos sobrecarregados podem ter qualquer tipo de retorno diferente do método original. O que não se pode fazer é mudar apenas o tipo de retorno, pois a principal mudança que deve ser feita é mudar a lista de argumentos.
public class Casa {
public void limpar() {
}
/* métodos sobrecarregados podem ter
* tipos de retorno diferentes */
public int limpar(int qtdComodos) {
return 1;
}
}
Sobrescrita e Tipos de Retorno, e Retornos Covariantes
Quando uma subclasse precisa mudar a implementação de um método herdado (overriding), a subclasse deve definir um método que combine com a versão original.
No Java 5 é permitido mudar o tipo de retorno do método sobrescrito, desde que o novo tipo de retorno seja um subtipo do retorno declarado no método original; é o chamado retorno covariante.
public class Letras {
public Letras getLetra() {
return new Letras();
}
}
public class Vogais extends Letras {
/* tipo de retorno legal para o overriding,
* pois Vogais é subclasse de Letras */
public Vogais getLetra() {
return new Vogais();
}
}
Retornando um Valor
Existem seis regras para retornar um valor:
· É possível retornar null em um método com um objeto de referência como tipo de retorno;
· Um array é um tipo de retorno legal;
· Em um método com um tipo de retorno primitivo pode-se retornar qualquer valor que pode ser convertido implicitamente para o tipo de retorno declarado; ou seja, um método com tipo de retorno inteiro pode retornar, por exemplo, um char, que é compatível com o int;
· Em um método com tipo de retorno void não se deve retornar nada;
· Em um método com um objeto de referência como retorno, pode-se retornar qualquer tipo de retorno que possa ser feito cast implicitamente para o tipo de retorno declarado, ou seja, qualquer subclasse; qualquer objeto que passe no teste IS-A pode ser retornado de um método.
public class ExRetorno {
public Date getData() {
return null;
}
public String[] getArray() {
return new String[] {"1", "2"};
}
public int getQtd() {
char a = 'a';
return a; //char é compatível com int
}
public void setQtd() { }
public Object getObjeto() {
return new ExRetorno();
}
}
Fonte: SCJP Sun Certifi ed Programmer for Java 6 Study Guide
0 comentários:
Postar um comentário