Pessoal. Gostaria de saber se estes dois assuntos estão certos na minha resposta aqui em baixo! Vocês podem ajudar na correção? Grato!!!
Sobrecarga:
- Lista de argumentos no metodo deve ser diferente
- O tipo de retorno pode ser ou não diferente
- A chamada deve ser do mesmo tipo que a lista de argumentos
Sobrescrito:
- Pode sobrescrever métodos atraves da superclasse pra subclasse
- Sempre é o método sobrescrito que muda de comportamento
- Utiliza-se as palavras chaves this e super
- Quando utilizamos a palavra-chave this queremos chamar o método filho(sublclasse) e quando utilizamos o super queremos a chamar o método pai(superclasse)
Se alguem tiver mais alguma coisa a colocar podem postar neste tópico por favor!
Seguem mais algumas observações:
-Métodos sobrecarregados podem ter modificadores de acesso diferentes.
-Os construtores podem ser sobrecarregados mas não subscritos.
-Métodos subscritos devem ter o mesmo tipo de retorno, exceto no caso do retorno covariante (Java 5) onde o tipo de retorno pode ser uma subclasse.
-O tipo de objeto determina que método subscrito será usado no tempo de execução.
-O tipo de referência determina que método sobrecarregado será usado no tempo de compilação.
Na afirmação “A chamada deve ser do mesmo tipo que a lista de argumentos”
Fiz a seguinte Experiência e “rodou” normal
[code]public class Test {
public long sum( long a, long b ) {
return a + b;
}// fim do método sum
public String sum( int a, String b ) {
return a + b;
}
} // fim da classe Test
[/code]
Alguém pode explicar?
Abraços a todos
Creio que o significado desta afirmação seja que a chamada do método, ou seja, a invocação, deve ter uma lista de argumentos na chamada que seja idêntica, no sentido de tipo de variável, à encontrada na assinatura do método. Utilizando seu exemplo:
sum(10L, 20L);
sum(10, "20");
Está certo, mas qualquer coisa diferente, tal como:
sum("10", "20");
sum(new Object(), 20L);
Não irá funcionar. Isto é um pouco óbvio, mas é importante enfatizar no estudo, pois é a lista de argumentos que determina qual método de fato será chamado. Se bem me recordo, isto é determinado em tempo de compilação.
Pelo menos, esta é a minha interpretação do significado desta frase “A chamada deve ser do mesmo tipo que a lista de argumentos”, posso estar enganado…
Waocnek