DEV Community

Sobreposição de métodos

  • 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.

Image description

Image description

  • 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.

Image description

  • 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:

Image description

Image description

  • 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)