Mostrando postagens com marcador Tipos de Retorno Legais. Mostrar todas as postagens
Mostrando postagens com marcador Tipos de Retorno Legais. Mostrar todas as postagens

Tipos de Retorno Legais


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