DEV Community

Sobrecarga de métodos

  • Java permite a sobrecarga de métodos, onde dois ou mais métodos da mesma classe podem compartilhar o mesmo nome.

  • A sobrecarga de métodos ocorre quando as declarações de parâmetros dos métodos são diferentes.

  • A sobrecarga de métodos é uma forma de implementar o polimorfismo em Java.

  • Para sobrecarregar um método, é necessário declarar versões diferentes dele.

  • O compilador seleciona automaticamente o método correto com base nos parâmetros.

  • Uma restrição importante: os métodos sobrecarregados devem diferir no tipo e/ou na quantidade de parâmetros, não apenas no tipo de retorno.

  • Métodos sobrecarregados também podem diferir em seus tipos de retorno, mas os parâmetros são essenciais para a escolha do método correto.

  • Quando um método sobrecarregado é chamado, a versão com parâmetros que coincidem com os argumentos é executada.

Image description

Image description

  • O método ovlDemo() é sobrecarregado quatro vezes com diferentes assinaturas:

  • Primeira versão: sem parâmetros.

  • Segunda versão: com um parâmetro inteiro.

  • Terceira versão: com dois parâmetros inteiros.

  • Quarta versão: com dois parâmetros double.

  • As duas primeiras versões de ovlDemo() retornam void, enquanto as duas últimas retornam um valor.

  • A sobrecarga de métodos não é afetada pelo tipo de retorno.

  • Tentativas de usar as duas versões de ovlDemo() com assinaturas apenas diferenciadas pelo tipo de retorno causarão erro.

Image description

  • A diferença nos tipos de retorno não é suficiente para a sobrecarga de métodos em Java.

  • O exemplo mostra que dois métodos com a mesma assinatura, mesmo com tipos de retorno diferentes, causam erro.

  • Java realiza conversões automáticas de tipos, e essas conversões também se aplicam a parâmetros de métodos sobrecarregados.

Image description

  • O exemplo mostra duas versões do método f(): uma com parâmetro int e outra com parâmetro double.

  • Valores de tipos byte e short são automaticamente convertidos para int, chamando o método f(int).

  • Valores de tipo float são convertidos para double, chamando o método f(double).

  • Conversões automáticas ocorrem quando não há correspondência direta entre um parâmetro e um argumento.

  • A adição de uma versão de f() com parâmetro byte pode alterar a forma como os valores são tratados.

Image description

  • Com a versão atual, quando f() é chamado com um argumento byte, f(byte) é chamado diretamente, sem conversão automática para int.

  • A sobrecarga de métodos permite o polimorfismo em Java, facilitando a implementação do paradigma “uma interface, vários métodos”.

  • Em linguagens sem suporte à sobrecarga, métodos semelhantes para diferentes tipos de dados precisam ter nomes distintos (ex: abs(), labs(), fabs() em C).

  • Java permite usar o mesmo nome para métodos com diferentes tipos de argumentos, como o método abs() da classe Math, que é sobrecarregado para diferentes tipos numéricos.

  • A sobrecarga reduz a complexidade ao permitir que métodos relacionados compartilhem um nome comum.

  • A seleção da versão correta do método é feita pelo compilador com base no tipo de argumento.

  • Embora métodos sobrecarregados possam executar atividades diferentes, eles devem estar relacionados para manter clareza e coerência.

  • Evite usar nomes de métodos sobrecarregados para operações não relacionadas, pois isso pode confundir a intenção do código.

Top comments (0)