¿Un método sobrecarga a otro, o ambos métodos están “sobrecargados”?

13

Si creo este método

public void foo()

Y luego creo una versión sobrecargada como esta

public void foo( string bar )

¿Decimos que las segundas funciones sobrecargan la primera, o ambos métodos están "sobrecargados" por igual?

Esto implicaría (creo) que hay una función de tipo base, que está siendo sobrecargada, por otra función (algo así como herencia, pero no realmente).

Suponiendo que un método puede "sobrecargar a otro", también implicaría términos como "sobrecarga" y "sobrecarga", si es una palabra. Pero eso no se siente del todo bien, especialmente porque puedes 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 sobrecargando foo con foo( 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 al respecto. Hay cientos, si no miles, de descripciones de la sobrecarga de funciones en línea, pero a primera vista no pude encontrar ninguna respuesta a esto.

    
pregunta Willem D'Haeseleer 19.04.2012 - 18:24

3 respuestas

29

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 )" 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 tus ejemplos, puedes decir que estás sobrecargando "foo" (el nombre) con "foo (barra de cadena)" (la función), pero no puedes decir que creas un método sobrecargado, porque los métodos nunca se sobrecargan . Puedes decir que creas un método de sobrecarga. Formular "hacer foo sobrecargado" es solo una manera peor de decir "sobrecarga foo".

    
respondido por el thiton 19.04.2012 - 18:52
15

Simplemente diría que foo está sobrecargado. Ciertamente no hay una relación maestro / esclavo o padre / hijo aquí.

    
respondido por el DeadMG 19.04.2012 - 18:28
3

Creo que una buena manera de expresar esto es centrarse en el resultado final, no en los cambios realizados en la clase a lo largo del tiempo. Por lo tanto, en lugar de decir "sobrecargué 'foo' con 'foo (otros parámetros)'," dices "foo es una función sobrecargada, con 'foo ()' y 'foo (otros parámetros)." "

    
respondido por el mjfgates 19.04.2012 - 18:33

Lea otras preguntas en las etiquetas