O que é sobrecarga de método?
A sobrecarga de métodos é um recurso na maioria das linguagens de programação orientadas a objetos, nas quais dois ou mais métodos compartilham o mesmo nome, mas têm parâmetros diferentes. Especificamente, o número, tipo de dados e / ou ordem dos parâmetros são diferentes. Quando o código é compilado, o método correto será selecionado automaticamente com base em como é chamado. Os métodos também são conhecidos como funções em algumas linguagens de programação; portanto, a sobrecarga de método às vezes é chamada de sobrecarga de função.
Um exemplo simples de sobrecarga de método seria um método que calcula a área de um quadrado. Pode ser definido como getArea (Square s). Esse método pode ser sobrecarregado para calcular adicionalmente a área do círculo adicionando o método getArea (Círculo c).
O principal requisito para a sobrecarga de método é que os métodos compartilhem o mesmo nome. Suas assinaturas de método - o nome do método, o número de parâmetros e os tipos de dados dos parâmetros - devem ser exclusivos. Dessa maneira, o compilador pode determinar qual método executar.
Os construtores, os métodos usados para instanciar objetos, geralmente são sobrecarregados. Isso é feito para inicializar um objeto com valores não padrão. Por exemplo, um objeto empregado com dois campos (nome e data de nascimento ou nascimento) pode ter os seguintes construtores sobrecarregados: Empregado (), Empregado (nome) e Empregado (nome, dob). O primeiro construtor cria um objeto de funcionário com campos em branco e nome dob. O segundo define o campo do nome, mas deixa o campo dob em branco, e o terceiro define os campos nome e dob.
A sobrecarga de método costuma ser feita para fazer com que mais de um método apareça logicamente como um único método. No exemplo getArea (), enquanto existem fisicamente dois métodos, o chamador é apresentado com um único método lógico getArea (). Dessa maneira, getArea () pode ser expandido para trabalhar em outras formas - triângulos, trapézios etc. - enquanto ainda se apresenta logicamente como um único método.
Os métodos também são sobrecarregados para preservar a compatibilidade com versões anteriores. Um método que faz um cálculo complexo pode receber um novo requisito para executar opcionalmente o mesmo cálculo com uma pequena alteração. Um novo parâmetro é adicionado ao método que determinará como executar o cálculo - a maneira antiga ou a nova maneira.
Para evitar a necessidade de localizar todos os casos em que o método é chamado e adicionar o novo parâmetro, o método pode ser sobrecarregado. O novo método terá a assinatura antiga e será chamado pelo código existente. Ele não conterá nenhuma lógica em si e simplesmente chamará o método modificado e passará o padrão "caminho antigo" para o novo parâmetro. O novo código chamará o método modificado e passará o novo parâmetro com o valor apropriado, maneira antiga ou nova.
A sobrecarga de método é um tipo de polimorfismo, no qual o mesmo método lógico pode ser, na prática, usado de várias maneiras. Sobrecarga de método não é o mesmo que substituição de método. Substituição de método é onde a definição de um método em uma classe pai é alterada por uma classe filho. Nesse caso, os dois métodos terão a mesma assinatura.