Sobrecarga de Métodos
As sobrecargas de métodos são muito mais simples do que o imponente nome sugere. Como acabei de falar no tópico anterior sobre métodos construtores, vou aproveitar aquele exemplo e explicar sobrecarga a partir dele.
Sobrecarga de métodos nada mais é do que ter métodos (sejam eles construtores ou não) com o mesmo nome, mas recebendo diferentes argumentos. Vamos aos exemplos práticos. A imagem abaixo mostra o nosso construtor padrão, que não recebe nenhum argumento, vejam:
Conforme vimos no tópico sobre Construtores, esse método será chamado sempre que um objeto for criado e, nesse instante inserirá os valores “Branca” e “FIAT” nas propriedades strCor e strMarca, respectivamente.
Agora vamos criar uma sobrecarga para esse método, prevendo uma situação onde nós queiramos informar, já no ato da criação do objeto, qual é sua cor, ou seja, queremos que o objeto já “nasça” com a cor que especificarmos, sem a necessidade de acionar algum método para alterar esse valor posteriormente. Nosso código agora ficará da seguinte forma:
Vejam que criei um método com o mesmo nome, mas recebendo um argumento do tipo String. Isso quer dizer que quando chamarmos esse método construtor que recebe o argumento cor, nosso objeto nascerá com a cor que for especificada e com a marca em branco, ou seja, a propriedade strMarca receberá um valor vazio, da mesma forma que acontece quando não criamos um método construtor e o compilador o faz automaticamente.
Vamos criar uma nova sobrecarga, agora recebendo também a marca do carro. Nosso código ficará da seguinte forma:
Agora temos um método que recebe, além da cor, também a marca que será inserida no ato da criação do nosso objeto do tipo Carro. Isso é a sobrecarga de métodos. Percebam que é muito simples, mas os mais atentos devem estar se perguntando: “ótimo, mas como o sistema saberá qual dos métodos deverá chamar, já que existirão vários?”. Se você é um deles, parabéns, pois é uma excelente observação.
Vejam, a resposta é tão simples quanto o conceito de Sobrecarga. O sistema saberá qual método chamar de acordo com a quantidade de argumentos que você estiver passando no momento da criação do objeto. Se não passar nenhum argumento, ele chamará o construtor padrão. Se passar apenas um, ele chamará o método de primeira sobrecarga (destacado em verde na imagem acima). Se passar dois, ele chamará o de segunda sobrecarga (azul). E assim por diante. Vejam como o IntelliSense do Visual Studio nos ajuda nesse momento:
Colocando a seta para baixo, acessamos a segunda sugestão, conforme imagem abaixo:
E como terceira opção temos:
Dessa forma podemos saber quantas sobrecargas de métodos existem e como cada uma delas espera receber seus argumentos. De acordo com os argumentos que forem passados é que o sistema chamará o método construtor adequado.
Vale lembrar que fiz estes exemplos com um método construtor, mas você pode utilizar a sobrecarga em quaisquer métodos.
É isso!