Sobrecarga
Origem: Wikipédia, a enciclopédia livre.
Orientação a objetos |
Objeto |
Classe |
Abstração |
Métodos |
Atributo |
Encapsulamento |
Herança |
Polimorfismo |
Outras referências |
Padrões de projeto |
UML |
Engenharia OO |
Sobrecarga de método, este tipo de polimorfismo permite a existência de vários métodos de mesmo nome, porém com assinaturas levemente diferentes ou seja variando no número e tipo de argumentos e no valor de retorno. Ficará a cargo do compilador escolher de acordo com as listas de argumentos os procedimentos ou métodos a serem executados.
[editar] Exemplo
Suponha a seguinte classe escrita em Java:
public class Soma { public int Soma(int x, int y) { return x+y; } public String Soma(String x, String y) { return x+y; } public double Soma(double x, double y) { return x+y; } }
O método que será executado depende estritamente do tipo do parâmetro passado e esta descisão será feita pelo compilador.
[editar] Benefícios
A importância de permitir a sobrecarga de métodos não reside em uma mera conveniência para evitar que se tenha que escolher e usar nomes novos para cada definição, ou para evitar conflitos entre nomes existentes em um determinado escopo e, assim, evitar a "poluição" do espaço de nomes usados em programas.
A sobrecarga de métodos tem, outrossim, a propriedade fundamental de permitir que expressões e nomes definidos por meio do uso de símbolos sobrecarregados possam ser usados em contextos que requerem valores de tipos distintos, permitindo assim que sejam definidas novas abstrações polimórficas.
Como um exemplo bastante simples, considere que o símbolo + é sobrecarregado para adição de inteiros e números de ponto flutuante. Nesse caso, podemos ter uma única definição para computar a soma dos inteiros em uma lista, seja ela uma lista de inteiros ou uma lista de números de ponto flutuante.
Em outras palavras, podemos fazer uma única definição, polimórfica, da mesma forma como ocorre no caso, tão justamente louvado, do polimorfismo paramétrico.