Se eu criar esse método
public void foo()
E então eu crio uma versão sobrecarregada como esta
public void foo( string bar )
Dizemos que a segunda função sobrecarrega a primeira ou os dois métodos são igualmente "sobrecarregados"?
Isso implicaria (eu acho) que existe uma função do tipo base, que está sendo sobrecarregada, por outra função (algo como herança, mas não realmente).
Supondo que um método possa "sobrecarregar outro", também implicaria termos como "sobrecarregador" e "sobrecarga", se isso é uma palavra. Mas isso não parece certo, especialmente porque você pode ter várias sobrecargas.
Cheguei a essa pergunta quando queria escrever o processo de criação de um método sobrecarregado e queria a maneira mais correta de anotá-la.
Exemplos:
- Estou sobrecarregando
foo
- Estou sobrecarregando
foo
comfoo( string bar )
- Estou criando um método sobrecarregado
- Estou fazendo foo sobrecarregado
Então, sim, isso me fez pensar: não sei o que fazer disso. Existem centenas, senão milhares, de descrições de funções sobrecarregando on-line, mas, à primeira vista, não consegui encontrar nenhuma solução para isso.
fonte
Respostas:
Ao falar sobre sobrecargas, o nome da função está sobrecarregado, não a própria função. As funções que sobrecarregam o nome são "sobrecargas" e sobrecarregam o nome, mas não uma a outra. No seu exemplo,
"public void foo()"
e os"public void foo( string bar )"
dois sobrecarregam o nome "foo". Portanto, você não pode falar em termos de sobrecarga e overloadee de uma das funções, porque elas não têm relacionamento direto.Nos seus exemplos, você pode dizer que está sobrecarregando "foo" (o nome) com "foo (barra de strings)" (a função), mas não pode dizer que cria um método sobrecarregado, porque os métodos nunca são sobrecarregados. Você pode dizer que criou um método de sobrecarga. Formular "sobrecarregar o foo" é apenas uma maneira pior de dizer "sobrecarregar o foo".
fonte
Eu simplesmente diria que
foo
está sobrecarregado. Certamente não há nenhuma relação de mestre / escravo ou pai / filho acontecendo aqui.fonte
Eu acho que uma boa maneira de expressar isso é focar no resultado final, não nas alterações feitas na classe ao longo do tempo. Portanto, em vez de dizer "sobrecarreguei 'foo' com 'foo (outros parâmetros)'", você diz "foo é uma função sobrecarregada, com 'foo ()' e 'foo (outros parâmetros)".
fonte