Wenn ich diese Methode erstelle
public void foo()
Und dann erstelle ich so eine überladene Version
public void foo( string bar )
Sagen wir, dass die zweite Funktion die erste überlastet, oder sind beide Methoden gleichermaßen "überlastet"?
Dies würde implizieren (ich denke), dass es eine Basistypfunktion gibt, die von einer anderen Funktion überladen wird (etwas wie Vererbung, aber nicht wirklich).
Unter der Annahme, dass eine Methode eine andere "überlasten" kann, würde dies auch Ausdrücke wie "Überlader" und "Überlader" implizieren, wenn dies überhaupt ein Wort ist. Aber das fühlt sich überhaupt nicht richtig an, zumal Sie mehrere Überladungen haben können.
Ich kam auf diese Frage, als ich den Prozess des Erstellens einer überladenen Methode aufschreiben wollte, und ich wollte die korrekteste Art, sie aufzuschreiben.
Beispiele:
- Ich überlaste
foo
- Ich überlade
foo
mitfoo( string bar )
- Ich erstelle eine überladene Methode
- Ich mache foo überlastet
Also ja, diese Art brachte mich zum Nachdenken, ich bin nicht sicher, was ich davon halten soll. Es gibt hunderte, wenn nicht tausende Beschreibungen von Funktionsüberlastungen im Internet, aber auf den ersten Blick konnte ich keine finden, die sich damit befassen.
quelle
Antworten:
Wenn von Überladungen die Rede ist, ist der Name der Funktion überladen, nicht die Funktion selbst. Die Funktionen, die den Namen überladen, sind "Überladungen" und überladen den Namen, aber nicht einander. In Ihrem Beispiel
"public void foo()"
und"public void foo( string bar )"
Überlastung sowohl den Namen „foo“. Daher können Sie nicht in Bezug auf Überlader und Überlader einer der Funktionen sprechen, da sie keine direkte Beziehung haben.In Ihren Beispielen können Sie sagen, dass Sie "foo" (den Namen) mit "foo (Zeichenfolge)" (die Funktion) überladen, aber Sie können nicht sagen, dass Sie eine überladene Methode erstellen, da Methoden niemals überladen werden. Sie können sagen, dass Sie eine Überladungsmethode erstellen. "Foo überladen" zu formulieren, ist nur eine schlechtere Art, "Foo überladen" zu sagen.
quelle
Ich würde einfach sagen,
foo
ist überladen. Hier gibt es sicherlich keine Beziehung zwischen Master / Slave oder Eltern / Kind.quelle
Ich denke, eine gute Möglichkeit, dies auszudrücken, besteht darin, sich auf das Endergebnis zu konzentrieren und nicht auf Änderungen, die im Laufe der Zeit an der Klasse vorgenommen wurden. Anstatt also "Ich habe 'foo' mit 'foo (andere Parameter)' überladen" zu sagen, sagen Sie "foo ist eine überladene Funktion mit 'foo ()' und 'foo (andere Parameter)'."
quelle