André Fonseca:
oi
não acho polêmica, acho definições diferentes, qual a diferença entre considerar overloading falso polimorfismo ou não considerar polimorfismo?
na minha opinião o importante é vc saber o que é e principalmente quando usar e quais as vantagens vc pode obter :)
acho que a diferença é pq não é polimorfico so isso... ^^ ... são apenas varios métos, com mesmo nome, mas não há nenhum morfismo entre eles... não existe relação entre os 3 métodos, de forma alguma, eles só estão ali escrito com mesmo nome, o que torna tudo mais simples na hora de escrever claro...
Quando vc fala em polimorfico é a capacidade de assumir que algo pode ser em diversas formas... assumir que sobrecarga é polimorfismo seria o mesmo que dizer
public class MinhaClasseMaluco {
void addProduto(Produto p) {}
void addFuncionario(Funcionario f) {}
void addCebola(Cebola c) {}
}
ou seja, existe um polimorfismo ali ? pq o objeto é capaz de aceitar Cebolas, Funcionarios, Produtos ? a resposta vem instantaneamente a mente, pq é facil de ver, que não existe
não é pq eu dou um refactoring e transformo o código anterior nisso
public class MinhaClasseMaluco {
void add(Produto p) {}
void add(Funcionario f) {}
void add(Cebola c) {}
}
que ele passa a ter muitas formas, ele continua sendo a mesma coisa, a unica diferença é que o método tem o mesmo nome....
e mais, por exemplo, o principio de assumir q o método aceita muitas formas simplismente some.... pq vc sempre saberá pra qual método estará enviando seu objeto, e assim ele não idepende da forma ...
.........
se existisse um único método add(), que aceitasse e interpretasse a forma, ai sim, estariamos diante de algo POLI Morfico...
porem não há nada de poli, ali, a não ser o fato de existirem 3 métodos
public class MinhaClasseMaluco {
void add(Entidade e) {
//se Cebola faz algo
//se Funcionario faz outra coisa
//se Produto faz mais outra coisa
}
}
esse método acima, vai aceitar os 3 objetos anterior, quando vc manda pra ele, ele é polimorfico, pq ele aceita as 3 formas, vc quando manda pra ele, não escolhe qual forma mandar, ele vai se virar sozinho pra descobrir, e isso sim é polimorfismo....
ter q escolher um método, e só pq ele tem o mesmo nome, pra mim não caracterisa de forma alguma o polimorfismo
......