"Olá amigo! Vou falar sobre sobrecarga de métodos ."
"Você pode sobrecarregá-los também?! Que dia!"
"Você pode fazer muito com eles, mas não vamos entrar nisso agora."
"É um acordo."
"A sobrecarga é uma operação muito simples. Na verdade, nem sequer é uma operação sobre métodos, embora às vezes seja chamada por um nome assustador: polimorfismo paramétrico ."
O que você deve lembrar é que todo método em uma classe deve ter um nome exclusivo.
"Sim, eu sei."
"Bem, isso não é inteiramente verdade. Quero dizer, não é de todo verdade. Um método não precisa ter um nome único. O que deve ser único é a combinação de um nome de método e os tipos de seus parâmetros . Essa combinação também é conhecido como uma assinatura de método."
Código | Comentários |
---|---|
|
Isso é permitido. Os dois métodos têm nomes exclusivos. |
|
E isso também é permitido. Os dois métodos têm nomes exclusivos (assinaturas). |
|
Os nomes dos métodos ainda são únicos aqui. |
|
Mas isso não é permitido. Os métodos não são únicos, mesmo que diferentes tipos estejam sendo passados. |
|
Mas isso é permitido. Os parâmetros do método são exclusivos. |
"Eu já vi isso em algum lugar."
"Sim. Quando você digita " System.out.println ", o IntelliJ IDEA sugere algumas dezenas de versões de métodos de impressão que usam parâmetros diferentes. O compilador simplesmente identifica e chama o método necessário com base nos tipos de parâmetros que você passa."
"Isso não é tão difícil. Mas não é polimorfismo."
"Ou, mais precisamente, não é substituição de método."
A propósito, gostaria de salientar que os nomes dos parâmetros são irrelevantes. Eles são perdidos durante a compilação. Depois que um método é cumprido, apenas seu nome e tipos de parâmetro são conhecidos.
GO TO FULL VERSION