Overload é um tipo de polimorfismo

56 respostas
L

Pessoal,

Já encontrei em livros de java e de OO e na internet opiniões diferentes a respeito disto.

Alguns consideram override e overload como tipos de polimorfismo.
E outros apenas o override como polimorfismo e o overload como recurso de OO.

Eu considero ambos como tipos de polimorfismo. O que vcs consideram a respeito e por quê?

flw

56 Respostas

saoj

Overload é um polimorfismo horizontal e bobo. Mas útil para construir APIs simples.

Override é um polimorfismo vertical e poderoso. Bastante útil para flexibilidade e reutilização de código.

Alexandre_Gazola

Olá, blz?

Eu considero ambos como tipos de polimorfismo. Gosto bastante da classificação de Cardelli e Wegner, que classifica o polimorfismo override, também chamado de Polimorfismo de Inclusão como Polimorfismo Universal (verdadeiro polimorfismo); por sua vez, classifica o Polimorfismo de Sobrecarga como Polimorfismo Ad-hoc (algo como um polimorfismo de aparência).
Como ambos seguem o propósito de permitir o trabalho ortogonal c/“várias formas”, acho essa classificação bastante apropriada.

Bem, é isso. Um abração

L

Lembrando o seguinte no livro de certificação da Katty, ela não considera overload como polimorfismo. Eu discordo deste ponto de vista.

saoj:
Overload é um polimorfismo horizontal e bobo.

Override é um polimorfismo vertical e poderoso.


Concordo com isso.

flw

cv1

Eu nao considero overloading “OO”, pq nao eh muito mais do que uma gambiarra em cima dos tipos dos parametros pra facilitar diversos tipos de operacao. Nao estou dizendo que nao tem valor em uma linguagem estaticamente tipada como Java, mas que nao eh OO, por si so: eh um recurso da linguagem.

Pra explicar melhor, tente sacar a diferenca entre

public void foo(String bar) { ... } public void foo(Integer baz) { ... }

e:

public void foo(Object bar) { if(bar instanceof String) { ... } else if(bar instanceof Integer) { ... } }

…no bytecode fica ligeiramente diferente, o codigo eh obviamente diferente, as assinaturas da classe ficam diferentes… enfim, muda tudo, menos o comportamento do codigo em runtime, e, no fim das contas, voce continua passando uma mensagem “foo” ao um objeto, com um parametro. :wink:

cv1

saoj:
Overload é um polimorfismo horizontal e bobo. Mas útil para construir APIs simples.

Override é um polimorfismo vertical e poderoso. Bastante útil para flexibilidade e reutilização de código.

Voce poderia expandir um pouco mais nisso? Nao estou vendo os fatos por tras das afirmacoes, aqui. :wink:

pcalcado

Eu não considero overloading polimórfico.

saoj

cv:
saoj:
Overload é um polimorfismo horizontal e bobo. Mas útil para construir APIs simples.

Override é um polimorfismo vertical e poderoso. Bastante útil para flexibilidade e reutilização de código.

Voce poderia expandir um pouco mais nisso? Nao estou vendo os fatos por tras das afirmacoes, aqui. ;)

Tenho certeza que vc não entendeu isso, CV. Entou vou explicar um pouco melhor pra vc: :lol: :lol:

Overload é polimorfismo de métodos dentro de uma mesma classe, e acontece no nível de uma classe apenas (horizontal) e faz com que ao invés de addInteger(Integer i) e addString(String s) eu tenho apenas uma add que serve para vários tipos. Sem contar que posso ter ter add(String s, Integer i). Já pensou que saco seria programar sem overload…

Override é feito obrigatoriamente por uma classe que herda uma outra, sobreescrevendo o comportamento de um método na vertical. O Java no runtime se encarrega de chamar o método mais especializado de um objeto polimórfico.

public void mandeoanimalcomer(Animal animal) {
    animal.coma();
}

No código acima o Animal pode comer de várias formas, dependendo do objeto que é passado pra ele. Quando vc programa assim vc está deixando o seu código flexível pois daqui a 10 anos quando descobrirem uma nova espécie de Animal, ele vai poder comer com o seu método.

ramilani12

A diferença de Overloading e Overriding é que o Overloading você pode declarar vários métodos com o mesmo nome , mas cm lista de argumentos diferentes , pode fazer na mesma classe ou na subclasse … :slight_smile:

Thiago_Senna

Eu não considero overloading um tipo de polimorfismo!

Se poliformismo é a capacidade de um objeto se comportar de forma diferente dependendo de sua implementação, então não acho que overloading seja um tipo de polimorfismo, por exemplo.

try {
   Politico p = new ZeDirceu();
   p.sacaDinheiroDeMarcosValerio(500000.00);
}catch (IllegalArgumentException e) {
    System.out.println(e.getMessage());
}

Neste exemplo o dinheiro seria sacado sem problemas!

try {
   Politico p = new ValdemarCostaNeto();
   p.sacaDinheiroDeMarcosValerio(500000.00);
}catch (IllegalArgumentException e) {
    System.out.println(e.getMessage());
}

A saída desta rotina seria a seguinte mensagem:
“Você executou uma operação ilegal”, que nada mais é do que a mensagem de exceção!

Como podemos ver, o método p.sacaDinheiroDeMarcosValerio(500000.00) possui um comportamente diferente para os dois casos, mesmo sendo o mesmo método. Logo, eu entendo isso como polimorfismo! Mas eu sobrepor este método passando uma String por parâmetro ao invés de um double, não vai estar mudando o comportamento do objeto, apenas é um método a mais!

É isso que eu entendo de polimorfismo, e a uma semana atrás exatamente eu achava que sobreposição também era polimorfismo, e se não me engano, realmente há livros que defendam que sobreposição é polimorfismo!

Abraços!
Thiago Senna

L

Thiago Senna:

Se poliformismo é a capacidade de um objeto se comportar de forma diferente dependendo de sua implementação

Aqui que está a diferença, alguns autores referem-se a polimorfismo apenas a respeito de objetos, que na minha opinião limita o “polimorfismo”.

Os que consideram override e overload como tipos de polimorfismo, olham o fato de “varias formas” para objetos e métodos.

flw

Fabricio_Cozer_Marti

Vcs tão metendo o pau no overloading e nao sabem que ele pode ser muito util, pra resolver chamadas de metodos onde precisam de mais do q um parametro .

Ex.: Vamos supor q vc precise montar algo.

A assinatura fornecida a principio eh essa:

public Collection montarAlgo(String nome){
   //Montandooo........
}

Certo … depois de um tempo vc descobre q tem q mudar e precisa saber se vc deve ‘montar’ com ou sem alguma outra coisa …

public Collection montarAlgo(String nome, boolean withOtherThing){
    //Arruma antes de montar pq o boolan pode ser true
   montarAlgo(nome);
}

Os dois sao considerados polimorfismo, porem um eh com heranca e outro nao.

Thiago_Senna

lap_junior:
Os que consideram override e overload como tipos de polimorfismo, olham o fato de “varias formas” para objetos e métodos.

Tá, entaum aqui vai uma pergunta que quebrou minhas pernas recentemente!

Onde o overloading será útil para para você no reaproveitamento de código?
Onde o overriding será útil pra você no reaproveitamento de código?

Thiago Senna

L
Thiago Senna:
Onde o overloading será útil para para você no reaproveitamento de código? Onde o overriding será útil pra você no reaproveitamento de código?

O reaproveitamento de código, na minha opinião, é uma caracteristica de OO onde a herança é o recurso, afinal de contas não é necessário fazer override para reutilizar código.

Se vc tem:
class Funcionario {
  int chapa;
  String nome;
  float salario;
}

class Gerente extends Funcionario {
  String gerencia;
  float valorAdicional;
}

Vc reaproveitou código e estendeu sua aplicação e não usou override.

E na minha opinião o polimorfismo cuida de outro assunto dentro de OO, facilitar a vida tanto na estensão ( override ) quanto na implementação dos objetos ( overload ).

flw

pcalcado

Alguem pode, por favor, definir polimorfismo?

Thiago_Senna

Bom, entaum vc acha que polimorfismo não é útil para reutilização?

Bom, vejo nada de errado em se reaproveitar código à partir da herança, no entanto, repare que o reaproveitamente acontece sempre no overriding, e se vc fizer um overloading, é um método novo. OU vc adicionou um novo método, ou a subclasse terá que fazer um overriding em todas os métodos sobrepostos de sua superclasse! Isso é horrível…

Bom… para melhorar minha alfinetada ao overloading!

Se sua superclasse possui 20 métodos sobrepostos, entaum a subclasse, para mudar seu comportamento, terá que ter 20 métodos sobrescritos! (eecca…)

Bom, no livro do GOF (Desing Patterns), eles dizem que se deve preferir usar composição ao invés de herança! É ai que entra o polimorfismo! É nessa situação em que o polimorfismo dá um show de bola em comparação com a reaproveitamento por herança!

L

Ai que está o problema. eu vi esta:
http://encyclopedia.laborlawtalk.com/Polymorphism_%28computer_science%29

[editado]
Vi não, esta é da maneira que eu vejo polimorfismo. já que achei as duas.
[/editado]

flw

L

Não disse que não ajuda, disse que o reaproveitamento não se basea no override e sim na herança.

O polimorfismo ajuda com o override, mas não se limita apenas a instancias porque tb ajuda nos métodos, o overload.

flw

Thiago_Senna

Eu também li um livro que falava que falava que overloading é polimorfismo! O livro ainda falou de um outro tipo de polimorfismo bém menos usado! aff… mas nem me lembro de detalhes!!!

mister_m

Se seguirmos o sentido literal da palavra (polimorfismo = várias formas), overloading - e outras coisas também - pode ser considerado polimorfismo.

Contudo, se estivermos falando do conceito de OO chamado polimorfismo, não, não é.

rodrigousp

Pois é … Na minha prova de Conceitos e Princípios fundamentais de Linguagem de Programação, Polimorfismo é DIFERENTE de overload.

Por que ?

Bom, porque você pode programar coisas completamente diferentes sobrecarregando um nome. Não existe GARANTIA que o comportamento dos métodos será o mesmo.

Exemplo:

public String metodo(int valor){
      valor++;
      System.out.println("valor = "+ valor);
}
public String metodo(String string){
      System.out.println ("HelloWorld");
}

Exemplo de polimorfismo no Java: A função do operador “*” ( e outros).

L

Antes que alguém atire pedras, quero deixar claro que não quero mudar a opinião de ninguém. Quero esclarecer pq tem estas opiniões diferentes sobre o mesmo assunto.

Pq em OO não?

L

rodrigousp:
Bom, porque você pode programar coisas completamente diferentes sobrecarregando um nome.

Mas a ideia de polimorfismo não é permitir justamente isso?

Quando fazemos um override é pq queremos mudar a implementação.

pcalcado

rodrigousp:

Por que ?

Bom, porque você pode programar coisas completamente diferentes sobrecarregando um nome. Não existe GARANTIA que o comportamento dos métodos será o mesmo.

Não exatamente. Uma sobrescrita pode (e deve) mudar o comportamento de um método, desde que ele obedeça o contrato geral do método (pré e pós condições).

Sobrecarga não é polimorfismo em OOP porque eu não posso utilizar um método sobrecarregado no lugar do outro, pelo menos não em Java.

mister_m

Polimorfismo em OO está diretamente ligado ao dispatch dinâmico de mensagens. Overloading é resolvido em tempo de compilação e logo não se enquadra.

fmeyer

EM OO polimorfismo significa a capacidade do codigo de um programa ser utilizado com diferentes tipos de dados e objetos, Tambem pode aplicar a propriedade que possuem algumas operacoes de ter um comportamento diferente dependendo do objeto(ou tipo de dado) sobre os que se aplicam.

O conceito de polimorfismo se aplica tanto a funcoes como a tipos de dados, assim nascem os concitos de funcoes polimorificas e tipos polimorficos. As primeiras são aquelas funcoes que podem se auto avaliar em tempo de compilacao e amarram-se a diferentes dipos de dado de forma distinta.
Os tipos polimorficos por sua vez, são aqueles tipos de dados que contem ao menos um elemento base cujo tipo nao esta especificado.

pode-se classificar o polimorfismo em 2 grandes classes;
:arrow: polimorfismo dinamico, é aquele codigo que nao inclue nenhuma especificacao sobre o tipo de dados que ele esta trabalhando, com este pode se utilizar com todos os tipos de dados compativeis.;

:arrow: polimorfimo estatico, e aquele que os tipos de dados tem que ser explicitoes e declarados um por um antes de poderem ser utilizados.

O polimorfismo dinamico unido a heranca é classificada como programação generica :smiley:

rodrigousp

pcalcado:
rodrigousp:

Bom, porque você pode programar coisas completamente diferentes sobrecarregando um nome. Não existe GARANTIA que o comportamento dos métodos será o mesmo.

Não exatamente. Uma sobrescrita pode (e deve) mudar o comportamento de um método, desde que ele obedeça o contrato geral do método (pré e pós condições).


Cuidado!!! Eu escrevi sobrecarga e não sobrescrita.
(Editado1: Só para deixar claro que estou dizendo apenas que este erro é muito comum, às vezes por mera distração
Editado2: Acho que o shoes estava falando da diferença de sobreescrita e sobrecarga para o lap_junior. Não é isso !? Neste caso, vale também a perguntar qual a definição de sobrecarga. Para mim, Sobrecarga de Método é APENAS a capacidade que um compilador tem de aceitar o mesmo nome na assinatura de métodos diferentes usando os parâmetros para distingui-los. O programador não é obrigado a escrever métodos com o mesmo comportamento).

ramilani12

O tópico ta pegando mais fogo , que depoimento do Dirceu …hahua :stuck_out_tongue: :stuck_out_tongue:

L

Pelo que entendi e concordo com o pcalcado, é que tanto a sobrecarga quanto sobrescrita alteram a programação do método.

pcalcado

rodrigousp:
pcalcado:
rodrigousp:

Bom, porque você pode programar coisas completamente diferentes sobrecarregando um nome. Não existe GARANTIA que o comportamento dos métodos será o mesmo.

Não exatamente. Uma sobrescrita pode (e deve) mudar o comportamento de um método, desde que ele obedeça o contrato geral do método (pré e pós condições).


Cuidado!!! Eu escrevi sobrecarga e não sobrescrita.
(Editado: Só para deixar claro que estou dizendo apenas que este erro é muito comum, às vezes por mera distração).

Que erro?

Vou tentar de novo:

Não exatamente. Uma sobrescrita também (assim como sobrecarga) pode (e deve) mudar o comportamento de um método, desde que ele obedeça o contrato geral do método (pré e pós condições).

L

Pode mostrar a fonte?

pcalcado

Não sou msiter_m, mas tb posso revelar segredos (infame que só :XD: )

Lendo um psot meu mais acima:

pcalcado:
Eu não considero overloading polimórfico.

Meyer:

Polymorphism

[color=red]
As noted earlier, an “entity” is a name to which various values may become attached at
run time. This is a generalization of the traditional notion of variable.
Polymorphism is the ability for an entity to become attached to objects of various
possible types. In a statically typed environment, polymorphism will not be arbitrary, but
controlled by inheritance; for example, we should not allow our BOAT entity to become[/color]

L

Hum, legal pcalcado. Mas por exemplo a fonte http://encyclopedia.laborlawtalk.com/Polymorphism_%28computer_science%29
considera como uma tipo.

Por que vc acha tem fontes com opiniões diferentes?

rodrigousp

pcalcado:
rodrigousp:
pcalcado:
rodrigousp:

Bom, porque você pode programar coisas completamente diferentes sobrecarregando um nome. Não existe GARANTIA que o comportamento dos métodos será o mesmo.

Não exatamente. Uma sobrescrita pode (e deve) mudar o comportamento de um método, desde que ele obedeça o contrato geral do método (pré e pós condições).


Cuidado!!! Eu escrevi sobrecarga e não sobrescrita.
(Editado: Só para deixar claro que estou dizendo apenas que este erro é muito comum, às vezes por mera distração).

Que erro?

Vou tentar de novo:

Não exatamente. Uma sobrescrita também (assim como sobrecarga) pode (e deve) mudar o comportamento de um método, desde que ele obedeça o contrato geral do método (pré e pós condições).

Agora sim! Eu discordo categoricamente. Não existe necessidade alguma de obedecer um contrato geral do método para a sobrecarga de método (pré e pós condição). Veja a edição2 do outro tópico que eu escrevi.

L

rodrigousp:
Agora sim! Eu discordo categoricamente. Não existe necessidade alguma de obedecer um contrato geral do método para a sobrecarga de método (pré e pós condição). Veja a edição2 do outro tópico que eu escrevi.

obedecer um contrato geral do método para a sobrecarga de método (pré e pós condição) é valido somente para sobrescrita.

Mas a questão é que em ambos ( sobrescrita e sobrecarga ) vc pode (e deve) mudar o comportamento.

pcalcado

lap_junior:

Por que vc acha tem fontes com opiniões diferentes?

Por que tem gente que programa em Java e gente que programa em C#?

Lembre-se que são teorias. Na minha humilde opinião Bertrand Meyer é uma fonte incomparávelmente mais creditável que um dicinário online.

Rodrigo, você não entendeu. Eu vou tentar mais uma vez:

Não exatamente. Uma sobrescrita também (assim como sobrecarga) pode (e deve) mudar o comportamento de um método, desde que ele obedeça o contrato geral do método (pré e pós condições)¹.

Notas de rodapé:
¹ - Note que uma sobrecarga onde não existe sobrescrita não deve seguir pré e pós condições porque não existem pré e pós condições a seguir, já que ela não sobrescreveu nada.

L

Este é o autor daquele livro de OO que perguntei uns tempos atrás, estava achando familiar mas não tinha me ligado.

E ele classifica overload como o que? Recurso de OO ou da linguagem ou outra coisa?

mister_m

E ele classifica overload como o que? Recurso de OO ou da linguagem ou outra coisa?

O que o Bertrand diz eu não sei, mas overloading é um recurso da linguagem. Tanto que diversas linguagem estruturadas, como C, suportam overloading.

L

Não sabia que o C suportava overloading, achava que era apenas o C++.

Mas não vejo isto como recurso da linguagem, eu vejo isso como uma linguagem estruturada que suporta alguma coisa de OO.

mister_m

Explique o que polimorfirmo paramétrico tem a ver com OO.

L

Como polimorfismo é um recurso de OO, “polimorfismo paramétrico” que considero um tipo tb é.

mister_m

Como polimorfismo é um recurso de OO, “polimorfismo paramétrico” que considero um tipo tb é.

Note a falácia do teu argumento. É como dizer que herança de bens (imóveis, carros etc.) é OO porque é um tipo de herança :smiley:

rodrigousp

Pois é… Eu escrevi isto pro shoes, mas pode servir para outras pessoas.

A palavra escrita tem desses problema.
O shoes colocou uma palavra a mais para aumentar minha compreensão.
(Editado)

Às vezes escrevemos coisas corretas, mas sem clareza, elas não ajudam muito. Apesar disso ser uma crítica, sei que tenho o mesmo problema. Sejamos então mais claros.

Uma idéia para ser mais didático… se e quando quiser ser mais didático, tente reescrever completamente aquilo que escreveu (numa primeira vez) e não apenas acrescentar uma palavra.

L

hehehe nem tanto.

Mas pela fonte que passei umas msg acima conceitua, de maneira não porca, polimorfismo como recurso de OO e divide em tipos, no caso aqui, override e overload. E qquer linguagem pode dar suporte a este recurso.

Eu vejo este caso do override e overload, como o da herança simples e multipla, ambos tratam de um recurso de OO a herança são abordagens diferentes.

mister_m

Bem, eu também digo que polimorfismo é recurso OO, mas estou me referindo a overriding quando digo isso :slight_smile:

Polimorfismo paramétrico está ligado ao conceito de casting, não a outro conceito OO (como herança, por exemplo). Logo, a menos que você comece a dizer que casting é algo 100% OO, polimorfismo paramétrico é coisa de linguagem estruturada :slight_smile:

O único problema aqui é o nome que “coincide”. É como dizer que a violência é polimórfica (apresenta-se em várias formas) e fingir que isso é OO :smiley: (espero ter melhorado a analogia).

L

Opa, claro que não:

class Teste { float calculo( float a, float b ) { ... } double calculo( double a, double b ) { ... } }

A classe acima é válida, inclusive a classe java.lang.Math tem vários métodos sobrecarregados que retornam tipos diferentes.

caiofilipini

Pois é, o tipo de retorno não faz parte da assinatura do método.

[]'s

L

mister__m:
Polimorfismo paramétrico está ligado ao conceito de casting, não a outro conceito OO (como herança, por exemplo). Logo, a menos que você comece a dizer que casting é algo 100% OO, polimorfismo paramétrico é coisa de linguagem estruturada :slight_smile:

Entendi sua colocação, mas por que a ligação com o casting? E definitivamente casting não é 100% OO.

Se violência fosse OO eu diria que sim. 8)

mister_m

lap_junior:
mister__m:
Polimorfismo paramétrico está ligado ao conceito de casting, não a outro conceito OO (como herança, por exemplo). Logo, a menos que você comece a dizer que casting é algo 100% OO, polimorfismo paramétrico é coisa de linguagem estruturada :slight_smile:

Entendi sua colocação, mas por que a ligação com o casting? E definitivamente casting não é 100% OO.

Casting está ligado a parte “estática” da linguagem, resolvida em tempo de compilação, assim como polimorfirmo paramétrico. Logo, toda linguagem fortemente tipada (não necessariamente OO, como C, por exemplo) que possui o conceito de casting pode suportar polimorfismo paramétrico.

rodrigousp

Pois é, o tipo de retorno não faz parte da assinatura do método.

Ops… Editado!

L

É mister_m, mas tem um detalhe. :?:

Se polimorfismo parametrico é um tipo de polimorfismo. Então o que está errado é afirmar que polimorfismo é OO, correto seria dizer que OO tem override que é um tipo de polimorfismo, ou seja, polimorfismo é um conceito maior do que o conceito de OO, que só utiliza um tipo ou pedaço.

Porque é estranho falar que polimorfismo é um recurso de OO mas um tipo de polimorfismo não é OO.

mister_m

lap_junior:
É mister_m, mas tem um detalhe. :?:

Se polimorfismo parametrico é um tipo de polimorfismo. Então o que está errado é afirmar que polimorfismo é OO, correto seria dizer que OO tem override que é um tipo de polimorfismo, ou seja, polimorfismo é um conceito maior do que o conceito de OO, que só utiliza um tipo ou pedaço.

Reescrevendo:

Se herança de bens é um tipo de herança, então o que está errado é afirmar que herança é OO, correto seria dizer que OO tem herança de classes/tipos, que é um tipo de herança, ou seja, herança é um conceito maior do que o conceito de OO, que só utiliza um tipo ou um pedaço.

Você ainda pensa como você explicou acima? :wink:

Note, as palavras tem um sentido intrinsicamente ligado ao contexto. O grande problema nesse caso é que assume-se que as pessoas saibam que se refere a polimorfismo no sentido de dynamic dispatching, o que não é verdade porque alguns autores fizeram o “favor” de confundir a cabeça de quem está tentando entender o assunto.

L

Esta não foi legal :roll: .
Porque falei que se o conceito de herança foi utilizado no contexto de programação e é considerado um recurso de OO, todos os tipos de herança ( no caso simples e multipla ) dentro deste contexto são considerados recursos de OO, ou discorda disto?
Não estou misturando os contextos herança de bens ( fisicos ) e programação ( lógico ), isto na minha visão, por exemplo, é como comparar o contexto web com EJB.

O interessante é que estes autores e fontes na minha opinião estão no mesma patamar de credibilidade.

mister_m

Herança é um dos conceitos fundamentais de OO. Polimorfismo paramétrico existe faz muuuuuito tempo e não tem nada a ver com OO.

Apenas para tentar fechar o assunto:

public void a() {
...
}

public void a(int x) {
...
}

O que isso tem a ver com OO?

:arrow: Quando você explica herança, você precisa mostrar várias classes;

:arrow: Quando você explica polimorfismo (dynamic dispatching), você precisa mostrar várias classes;

:arrow: Quando você explica abstração de dados, você precisa mostrar várias classes;

:arrow: Quando você explica encapsulamento, você precisa mostrar várias classes.

Percebe como, para explicar polimorfismo paramétrico, você não precisa falar de classes nem de instâncias?

L

Certo, interessante a discussão ter vindo para este lado, pelo com o que vc apresentou overload não é OO, eu entendi.

Então voltando para o título do tópico “Overload é um tipo de polimorfismo?”
Resposta: É, mas não é OO. Certo?

Então pq livros conceituados não falam isto de uma vez e sim que overload não é polimorfismo?

[editado]Exemplo de livro o de certificação da Katty Sierra [/editado]

mister_m

lap_junior:
Certo, interessante a discussão ter vindo para este lado, pelo com o que vc apresentou overload não é OO, eu entendi.

Ufa, tava ficando sem argumentos :mrgreen:

lap_junior:
Então voltando para o título do tópico “Overload é um tipo de polimorfismo?”
Resposta: É, mas não é OO. Certo?

Já que polimorfismo significa várias formas, começaram a dizer que overloading é polimorfismo paramétrico. Polimorfismo em OO significa outra coisa, mas não existe um nome pra ele nesse contexto que seja popular. Logo, eu jamais digo pra alguém que overloading é uma forma de polimorfismo, porque isso só causa grandes confusões (e tópicos com mais de 50 posts, como esse :-D).

Bem, acho que o Bruce Eckel até diz isso, mas não lembro bem (to velho :-P).

L

Poxa, e vc não avisa!! Senão apertava mais um pouco :smiley: .

Legal desde o começo desse topico achei que não chegaria a lugar nenhum, onde as pessoas continuassem divididas entre as duas opiniões. Mas foi execelente pelo menos para mim, não existem mais duas opções.

Quando alguém perguntar a respeito, vou dar a resposta completa, overload é polimorfismo, mas não é OO, se quiser mais detalhes link desse topico. 8)

Pela primeira vez tive uma interação maior com este forum, gostei deste ambiente, vou participar mais. :thumbup:

vlw galera.

Criado 2 de agosto de 2005
Ultima resposta 3 de ago. de 2005
Respostas 56
Participantes 12