TransWikia.com

Sobrecarga de método é polimorfismo?

Stack Overflow em Português Asked by Douglas da Dias Silva on December 14, 2021

Estou com dificuldades de entender o conceito de polimorfismo em Java, li dois artigos do mesmo portal agora e me confundi mais, pois para minha interpretação eles se contradizem:

Trecho 1:

” A sobrecarga de métodos (overload) é um conceito do polimorfismo que consiste basicamente em criar variações de um mesmo método, ou seja, a criação de dois ou mais métodos com nomes totalmente iguais em uma classe. A Sobrecarga permite que utilizemos o mesmo nome em mais de um método contanto que suas listas de argumentos sejam diferentes para que seja feita a separação dos mesmos.”

https://www.devmedia.com.br/sobrecarga-e-sobreposicao-de-metodos-em-orientacao-a-objetos/33066

Trecho 2:

” Polimorfismo é o princípio pelo qual duas ou mais classes derivadas de uma mesma superclasse podem invocar métodos que têm a mesma identificação, assinatura, mas comportamentos distintos, especializados para cada classe derivada, usando para tanto uma referência a um objeto do tipo da superclasse. O overload não é um tipo de polimorfismo, pois com overload a assinatura do método obrigatoriamente tem que ter argumentos diferentes, requisito que fere o conceito de Polimorfismo citado acima ”
https://www.devmedia.com.br/encapsulamento-polimorfismo-heranca-em-java/12991

Então, sobrecarga de método é polimorfismo também?

One Answer

Em geral, publicações, algumas até bem famosas, podem errar. Na verdade todos podem. Tem muito material errado por aí, muitas vezes apenas por algum descuido.

Note que nesse caso são artigos diferentes de autores diferentes, então é normal que cada um tenha uma visão, aqui você verá outra(s). Nem sempre uma está errada só porque é diferente de outra. Não nesse caso, mas também é bom sempre olhar a data da publicação. E as credenciais do autor, porque o papel e HTML aceitam tudo.

A sobrecarga de métodos (overload) é um conceito do polimorfismo que consiste basicamente em criar variações de um mesmo método, ou seja, a criação de dois ou mais métodos com nomes totalmente iguais em uma classe. A Sobrecarga permite que utilizemos o mesmo nome em mais de um método contanto que suas listas de argumentos sejam diferentes para que seja feita a separação dos mesmos

Pode ser um polimorfismo ad-hoc, mas as pessoas não costumam usar este termo no dia a dia.

O texto é confuso e incompleto, mas está tecnicamente correto. O artigo como um todo está cheio coisas estranhas e até mesmo claramente incorretas nos detalhes.

Polimorfismo é o princípio pelo qual duas ou mais classes derivadas de uma mesma superclasse podem invocar métodos que têm a mesma identificação, assinatura, mas comportamentos distintos, especializados para cada classe derivada, usando para tanto uma referência a um objeto do tipo da superclasse. O overload não é um tipo de polimorfismo, pois com overload a assinatura do método obrigatoriamente tem que ter argumentos diferentes, requisito que fere o conceito de Polimorfismo citado acima

Porque será que precisa duas classes pelo menos? Não basta uma? Já começou mal. usando para tanto uma referência a um objeto do tipo da superclasse parece confuso ou só incorreto mesmo. Eu gosto mais dessa escola de considerar o overload como algo diferente, embora teoricamente até seja, na prática não usamos esse termo.

Ele deveria citar onde que há a exigência que a assinatura deve ser igual para ser polimorfismo. Tenho a impressão que ele não consegue, isso não tem fundamento. Digo assim porque ele está fundamentando. Se fosse só citar, ok, se for só para usar termos diferentes para cada mecanismo, que é bom para ficar mais fácil de comunicar a intenção.

O artigo tem outras coisas meio "soltas".

para ser polimorfismo tem que haver sobrecarga de método, pus como errada, então acertei né?

Há controvérsias. A sobrecarga clássica é horizontal, é ter métodos com mesmo nome, mas com assinaturas diferentes. Há quem chame o polimorfismo de sobrecarga vertical onde um método idêntico na assinatura tem comportamento diferente dependendo do nível da herança que ele está. Mas eu prefiro chamar só de polimorfismo para evitar confusão. E ele pode ocorrer de forma dinâmica, o mais comum, ou estática em geral com templates ou generics.

Eu não confiaria nos artigos.

Answered by Maniero on December 14, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP