A substituição e sobrecarga de métodos são manifestações diferentes do polimorfismo Java. A substituição é uma manifestação de polimorfismo entre pai e subclasses, enquanto a sobrecarga é uma manifestação de polimorfismo em uma classe.
Se um método definido em uma subclasse tiver o mesmo nome e parâmetros de sua classe pai, dizemos que o método é sobrescrito. Quando um objeto de uma subclasse utiliza este método, ele chamará a definição na subclasse. Para isso, a definição na classe pai parece estar "blindada".
Se vários métodos com o mesmo nome são definidos em uma classe e podem ter diferentes números de parâmetros, diferentes tipos de parâmetros ou diferentes ordens de parâmetros, isso é chamado de sobrecarga de método. Ele não pode ser sobrecarregado por permissões de acesso, tipos de retorno ou exceções lançadas.
1. Sobrecarga de método (sobrecarga)
Conceito: Simplificando: a sobrecarga de método consiste em vários métodos de implementação da mesma função de uma classe. O método usado depende dos parâmetros fornecidos pelo chamador.
Coisas a serem observadas:
(1) Os nomes dos métodos são iguais (2) Os tipos de parâmetros, número e ordem dos métodos não são diferentes em pelo menos um deles (3) Os tipos de retorno dos métodos podem ser diferentes (4) Os modificadores de os métodos podem ser diferentes. Se apenas os tipos de retorno forem diferentes, não pode constituir. Se a sobrecarga tiver apenas símbolos modificadores de acesso de controle diferentes, não pode constituir uma sobrecarga.
O método sobrecarregado pode alterar o tipo de valor de retorno.
2. Substituição de método (substituição)
Conceito: Simplificando: cobertura de método significa que a subclasse possui um método que possui o mesmo nome, tipo de retorno e parâmetros de um método da classe pai. aula.
Nota: Existem muitas condições para a cobertura do método. De modo geral, há dois pontos aos quais você deve prestar atenção:
(1) O tipo de retorno, os parâmetros e o nome do método da subclasse devem ser exatamente iguais ao tipo de retorno, aos parâmetros e ao nome do método da classe pai, caso contrário, ocorrerá um erro de compilação.
(2) Os métodos de subclasse não podem reduzir os direitos de acesso dos métodos da classe pai (o inverso é possível)
exemplo:
Substituir instância