Olá pessoal. Esta é a quinta parte do nosso mini curso de Java que terá 11 partes. Ele é voltado para iniciantes, porém é recomendado que ao estudá-lo, você já tenha pelo menos algum conhecimento em lógica de programação. Se você perdeu:
a primeira parte, leia aqui; a segunda parte, leia aqui; a terceira parte, leia aqui; a quarta parte, leia aqui;
Sobrecarga e sobrescrita de métodos e de construtores
Podem existir vários métodos sobrecarregados em uma mesma classe; Porém um método pode ser sobrescrito no máximo uma vez em uma subclasse. Na verdade essa restrição decorre do fato de não poder existir dois método iguais (mesmo nome e mesma lista parâmetros) em uma mesma classe.
Métodos sobrecarregados devem ter argumentos diferentes. Métodos sobrescritos devem ter argumentos idênticos. Na verdade se a lista de parâmetros não for idêntica a do método original, então não existe sobrescrita e sim sobrecarga.
O tipo de retorno de um método sobrecarregado pode ser escolhido livremente, o tipo de retorno de um método sobrescrito deve ser idêntico ao método original.
A sobrecarga de métodos permite a implementação de várias funcionalidades utilizando o mesmo nome. Sobrescrita, por outro lado, modifica a implementação de um método para uma subclasse.
Todas essas regras são válidas para métodos e construtores, exceto a sobrescrita de construtores, pois a mesma não existe.
Definição de sobrecarga:
O Java permite que você tenha métodos e construtores com o mesmo nome, mas com assinaturas diferentes, isto chama-se sobrecarga. O interpretador determinará qual método deve ser invocado pelo tipo de parâmetro passado. Os trecho abaixo é válido para uma compilação Java.
public class MinhaClasse {
…public void print( int i ){
…}
…public void print( float f ) {
…}
…public void print( String s) {
…}
}
Quando você escreve o código para chamar um desses métodos, a chamada deverá coincidir com tipos de dados da lista de parâmetros de algum dos métodos.
Definição de sobrescrita:
Diferente da sobrecarga, a sobrescrita acontece quando um método existe em uma classe pai e é reescrito na classe filha para alterar o comportamento. A assinatura do método deve ser igual na classe pai e na classe filha, ou seja, ele deve ter o mesmo tipo de retorno e receber os mesmo tipos de atributos como parâmetro. Como um exemplo abaixo está o código desenvolvido na seção this e super.
public class Pai {
…public numero;
…public int lançar(int numero) {
…return numero–;
…}
}
public class Filho extends Pai {
…public int lançar(int numero) {
…if (numero >= 0) {
……return this.numero;
…}
…super.lançar(numero);
…}
}
O método public int lançar (int numero) existe na classe filha e na pai, o primeiro a ser invocado é o Filho, e, via a palavra chave super, o interpretador chamará o método pai. Caso não houver o comando super.lançar (numero); o método pai não seria invocado.
Semana que vem estarei de volta com a parte 6 do Mini Curso de Java: Herança. Até lá! 😉
Últimos 5 artigos de Tiago Souza