Quando um método em uma subclasse tem o mesmo tipo de retorno e assinatura de um método na superclasse, diz-se que o método da subclasse sobrepõe o método da superclasse.
Quando o método sobreposto é chamado de dentro da subclasse, a versão da subclasse será usada, ocultando a versão da superclasse.
O método da superclasse ainda existe, mas não será acessado diretamente se houver uma versão sobreposta na subclasse.
Isso permite personalizar ou estender o comportamento da superclasse na subclasse.
O método show() de B agora chama super.show(), que executa a versão de show() da classe A.
Após isso, ele exibe o valor de k na subclasse B.
Isso permite que todas as variáveis de instância, tanto as da superclasse (i e j) quanto as da subclasse (k), sejam exibidas.
-
super.show()
chama a versão do método show() da superclasse.
Sobreposição de Métodos (Overriding): Ocorre quando os métodos têm a mesma assinatura (nome e parâmetros) e o mesmo tipo de retorno. A versão do método da subclasse substitui a da superclasse.
Sobrecarga de Métodos (Overloading): Ocorre quando os métodos têm o mesmo nome, mas assinaturas diferentes (número ou tipo de parâmetros). Permite ter múltiplos métodos com o mesmo nome na mesma classe ou em uma subclasse, realizando tarefas diferentes com base nos parâmetros.
- Versão modificada do exemplo anterior:
A versão do método show() em B recebe um parâmetro do tipo String, enquanto a versão em A não recebe parâmetros.
Devido a essa diferença na assinatura dos métodos, ocorre sobrecarga e não sobreposição (ou ocultação de nomes).
Top comments (0)