Was ist der Unterschied zwischen dem Überladen einer Methode und dem Überschreiben in Java?
Gibt es einen Unterschied in der Methodensignatur, dem Zugriffsspezifizierer, dem Rückgabetyp usw.?
java
object-oriented
user63948
quelle
quelle
Antworten:
Um eine Methode mit einer neuen Methode zu überladen, sollte die neue Methode eine andere Signatur haben. Dh zwei überladene Methoden haben den gleichen Namen, aber unterschiedliche Parameter. Hier ist ein Beispiel für zwei überladene Methoden:
Basierend auf den Parametertypen wird die entsprechende Methode aufgerufen. Beachten Sie, dass das Ändern des Rückgabetyps nicht ausreicht (obwohl Sie dies zusätzlich tun können).
Wenn eine Methode überschrieben wird, hat die neue Methode dieselbe Signatur und ersetzt in einigen Fällen die überschriebene Methode. Hier ist ein Beispiel für eine überschriebene Methode:
Die Auswahl erfolgt basierend auf dem Objekttyp. Zum Beispiel,
wird das
someMethod
von anrufenB
. Sie können (und sollten) die Annotation @Override hinzufügen:Wenn Sie nun versehentlich die Parameter in B ändern, werden Sie vom Compiler darüber informiert, dass Sie someMethod () nicht überschreiben, sondern überladen.
quelle
Überladen, Methoden haben den gleichen Namen, aber unterschiedliche Parameter.
Beim Überschreiben wird die in der Basisklasse angegebene Implementierung durch die in der Unterklasse ersetzt.
quelle
Konzepte, nach denen Sie fragen, werden in Java-Tutorials behandelt.
Die Erklärung zum Überschreiben wird wie folgt gegeben:
Das Überladen wird im Tutorial wie folgt erklärt:
Die obige Erklärung für das Überladen erwähnt Qualifikationen, die in der Lektion mit dem Titel "Schnittstellen und Vererbung" erörtert wurden :
quelle
Das Überladen einer Methode wird normalerweise definiert als "Bereitstellen mehrerer verfügbarer Methoden mit demselben Namen, die sich durch die Anzahl und Art der Ein- und Ausgänge unterscheiden". Das Konzept besteht normalerweise darin, dass Sie in der Lage sein möchten, dieselbe Grundoperation bei unterschiedlichen Eingabesätzen auszuführen: Sie können beispielsweise zwei beliebige Werte vom numerischen Typ "hinzufügen", es ist jedoch normalerweise wichtig, den genauen Typ zu kennen Der Wert ist so, dass Sie bestimmte Verhaltensweisen dieses Typs nutzen oder planen können. Als solches würden Sie eine Methode für jede Kombination von numerischen Typen (und / oder Sammlungen) definieren, die Sie unterstützen möchten. Alle diese Methoden haben den gleichen Namen, aber unterschiedliche "Signaturen"; zur Kompilierungszeit
Das Überschreiben einer Methode wird normalerweise definiert als "Bereitstellen einer anderen Implementierung in einer abgeleiteten Klasse einer Methode mit einer bestimmten in der Basisklasse definierten Signatur". Es gibt viele Gründe, eine Methode zu überschreiben. Praktisch allen ist gemeinsam, dass die abgeleitete Klasse über zusätzliche Kenntnisse darüber verfügt, was zu tun ist, was der Basisklasse nicht bekannt ist. In den meisten OO-Sprachen gibt es zwei Arten des Überschreibens. Überschreiben kann ersetzt die Basisklassenmethode, oder es kann erweiterndie Basisklassenmethode. Der Unterschied besteht normalerweise darin, dass eine abgeleitete Klasse, die eine Basisklassenimplementierung erweitert, die überschriebene Version der Methode der Basisklasse zu einem bestimmten Zeitpunkt während der Ausführung der überschreibenden Methode aufruft. Auf diese Weise können überschreibende Klassen allgemeine Bereiche der Operation, die in der Basisklasse enthalten sind, "wiederverwenden".
quelle