Si creo este método
public void foo()
Y luego creo una versión sobrecargada como esta
public void foo( string bar )
¿Decimos que la segunda función sobrecarga a la primera, o ambos métodos están igualmente "sobrecargados"?
Esto implicaría (creo) que hay una función de tipo base que está siendo sobrecargada por otra función (algo así como la herencia, pero en realidad no).
Asumir que un método puede "sobrecargar a otro", también implicaría términos como "sobrecarga" y "sobrecarga", si esa es una palabra. Pero eso no se siente del todo bien, especialmente porque puede tener varias sobrecargas.
Llegué a esta pregunta cuando quería escribir el proceso de creación de un método sobrecargado y quería la forma más correcta de escribirlo.
Ejemplos:
- Estoy sobrecargando
foo
- Estoy sobrecargado
foo
confoo( string bar )
- Estoy creando un método sobrecargado
- Estoy haciendo foo sobrecargado
Así que sí, esto me hizo pensar, no estoy seguro de qué hacer con eso. Hay cientos, si no miles, de descripciones de sobrecarga de funciones en línea, pero a primera vista no pude encontrar ninguna que abordara esto.
fuente
Respuestas:
Cuando se habla de sobrecargas, el nombre de la función está sobrecargado, no la función en sí. Las funciones que sobrecargan el nombre son "sobrecargas" y sobrecargan el nombre, pero no entre sí. En su ejemplo,
"public void foo()"
y"public void foo( string bar )"
ambos sobrecargan el nombre "foo". Por lo tanto, no puede hablar en términos de sobrecarga y sobrecarga de una de las funciones, porque no tienen una relación directa.En sus ejemplos, puede decir que está sobrecargando "foo" (el nombre) con "foo (barra de cadena)" (la función), pero no puede decir que crea un método sobrecargado, porque los métodos nunca se sobrecargan. Puede decir que crea un método de sobrecarga. Formular "hacer que foo se sobrecargue" es solo una forma peor de decir "sobrecargar foo".
fuente
Simplemente diría que
foo
está sobrecargado. Ciertamente no hay una relación maestro / esclavo o padre / hijo aquí.fuente
Creo que una buena manera de expresar esto es centrarse en el resultado final, no en los cambios realizados en la clase con el tiempo. Por lo tanto, en lugar de decir "Sobrecargué 'foo' con 'foo (otros parámetros)', usted dice" foo es una función sobrecargada, con 'foo ()' y 'foo (otros parámetros)' ".
fuente