Das Überladen und Überschreiben von Methoden sind die beiden Möglichkeiten, mit denen Java Polymorphismus demonstriert. Polymorphismus kommt von einer Kombination von zwei griechischen Wörtern: "poly" bedeutet viele und "morph" bedeutet Form. Daher ermöglicht Polymorphismus, dass Methoden viele Formen annehmen.
Folgen Sie dieser Anleitung, um zu erfahren, wie Sie Methoden in Java überladen oder überschreiben.
Was ist Methodenüberladung?
"Methodenüberladung" bezieht sich auf die Definition verschiedener Methoden in einer Klasse mit demselben Namen. Die Methoden müssen unterschiedliche Signaturen haben. Eine Methodensignatur ist die Kombination aus Methodenname und Parameterliste. Es enthält nicht den Rückgabetyp.
Der Compiler weiß, welche Methode zu verwenden ist, indem er den Typ, die Anzahl der Parameter und die Reihenfolge überprüft, in der sie platziert werden.
Verbunden: Erforschung der Vererbung in der Programmiersprache Java
Das Überladen von Methoden demonstriert den Polymorphismus zur Kompilierzeit. Kompilierzeitpolymorphismus bedeutet, dass der Java-Compiler ein Objekt zur Laufzeit an seine Funktionalität bindet. Dazu überprüft der Compiler Methodensignaturen.
Diese Art von Polymorphismus wird auch als statische oder frühe Bindung bezeichnet.
Sehen Sie sich das folgende Beispiel für das Überladen von Methoden an:
Klasse Arithmetik{
int Würfel (int x){
Rückgabe x*x*x;
}
Doppelwürfel (Doppelx){
Rückgabe x*x*x;
}
Schwimmerwürfel (schwimmer x){
Rückgabe x*x*x;
}
public static void main (String[] args){
Arithmetik myMultiplication = new Arithmetic();
System.out.println("Der Würfel von 5 ist " + myMultiplication.cube (5));
System.out.println("Der Würfel von 5.0 ist " + myMultiplication.cube (5.0));
System.out.println("Der Würfel von 0.5 ist " + myMultiplication.cube (0.5));
}
}
Ausgabe:
Der Würfel von 5 ist 125
Der Würfel von 5.0 ist 125.0
Der Würfel von 0,5 ist 0,125
Der obige Code zeigt, wie Sie einen Würfel verschiedener Typen erhalten können (int, doppelt, schweben) nach der gleichen Methode.
Im Allgemeinen wird Methodenüberladung verwendet, um ähnliche Methoden mit unterschiedlichen Parametertypen zu definieren.
Was ist Methodenüberschreibung?
Dies bezieht sich auf eine andere Implementierung einer Methode in einer Unterklasse. Die Methode muss bereits in der Elternklasse definiert worden sein.
Die überschreibende Methode (d. h. die in der Unterklasse) muss dieselbe Methodensignatur wie die in der Oberklasse haben. Der Rückgabetyp der überschreibenden Methode kann derselbe oder ein Untertyp desjenigen in der Oberklasse sein.
Überschreiben wird im Allgemeinen verwendet, um eine bestimmte Implementierung des Verhaltens eines Objekts in die Unterklasse aufzunehmen.
Klasse Konto{
öffentliche leere Nachricht () {
System.out.println("
Vielen Dank für die Eröffnung eines Kontos bei uns!");
}
public static void main (String args[]) {
Konto myAccount = neues Konto();
Einsparungen mySavings = new Savings();
FixedDeposit myFixedDepo = new FixedDeposit();
myAccount.message();
mySavings.message();
myFixedDepo.message();
}
}
Klasse Ersparnisse erweitert Konto {
öffentliche leere Nachricht () {
System.out.println("
Vielen Dank, dass Sie bei uns ein Sparkonto eröffnen!");
}
}
Klasse FixedDeposit erweitert Konto {
öffentliche leere Nachricht () {
System.out.println("
Vielen Dank, dass Sie bei uns ein Festgeldkonto eröffnen!");
}
}
Ausgabe:
Vielen Dank für die Eröffnung eines Kontos bei uns!
Vielen Dank, dass Sie bei uns ein Sparkonto eröffnen!
Vielen Dank, dass Sie bei uns ein Festgeldkonto eröffnen!
Das obige Beispiel zeigt, wie die Methode Botschaft() wird in den Unterklassen überschrieben Ersparnisse und Festgeld. Für Bankkontoinhaber mit Sparkonto und solche mit Festgeldkonto werden unterschiedliche Meldungen angezeigt.
Verbunden: Was Sie über die Verwendung von Strings in Java wissen müssen
Es ist auch erwähnenswert, dass das Überschreiben von Methoden den Laufzeitpolymorphismus oder den dynamischen Methodenversand demonstriert. Dies bedeutet, dass die aufzurufende Methode zur Laufzeit und nicht bei der Kompilierung aufgelöst wird.
Um zu vermeiden, dass eine Methode überschrieben wird, verwenden Sie das Schlüsselwort Finale.
letzte ungültige Nachricht (){
System.out.println("
Vielen Dank für die Eröffnung eines Kontos bei uns!");
}
Wenn eine Unterklasse versucht, sie zu überschreiben, tritt ein Kompilierungsfehler auf.
Idealerweise sollten alle innerhalb eines Konstruktors aufgerufenen Methoden called Finale. Dies dient dazu, unbeabsichtigte Änderungen zu vermeiden, die durch die Unterklassen verursacht werden können.
Manchmal müssen Sie möglicherweise auf eine überschriebene Methode innerhalb der überschreibenden Methode zugreifen. Sie können das Schlüsselwort verwenden Super gefolgt vom Punktoperator (.) und den Methodennamen in einem solchen Fall.
Betrachten Sie die Oberklasse Tier.
Klasse Tier{
öffentlicher Leerzug () {
System.out.println("
Ich kann mich bewegen.");
}
}
Unten ist eine Unterklasse, genannt Fisch, das überschreibt Bewegung():
Klasse Fisch erweitert Tier {
öffentlicher Leerzug () {
System.out.println("
Ich kann schwimmen.");
super.move();
}
public static void main (String args[]){
Fisch Tilapia = neuer Fisch();
Tilapia.move();
}
}
Ausgabe:
Ich kann schwimmen.
Ich kann mich bewegen.
Beim Überschreiben einer Methode müssen Sie auch auf den verwendeten Zugriffsmodifizierer achten. Der Modifikator in der Unterklasse sollte die gleiche Sichtbarkeit oder höher als in der Basisklasse haben. Wenn die Methode in der Basisklasse beispielsweise definiert ist als geschützt, dann kann die überschreibende Methode entweder geschützt oder Öffentlichkeit.
Einfacher Code mit Polymorphismus
Das Überschreiben und Überladen von Methoden ist wichtig für die Codevereinfachung, und einfacher Code ist eine bewährte Methode.
Warum? Stellen Sie sich eine komplexe Codebasis mit mehr Ein- und Ausgängen vor als die Grand Central Station. Stellen Sie sich nun vor, ein verheerender Fehler beginnt Ihre harte Arbeit vor Ihren Augen zu zerstören. Sie müssen die Infektionsquelle isolieren, und zwar schnell.
Viel Glück, du hast deinen Code nicht vereinfacht... Jetzt erhalten Sie eine echte Lektion in Kryptographie. Der Einsatz effektiver Datenstrukturen und die Möglichkeit, Code zu kürzen (z. B. DRY im Hinterkopf zu behalten) ist die beste Verteidigung gegen eine solche Situation.
Als nächstes sollten Sie auf Ihrer Java-Lernliste mit Arrays arbeiten. Sie sind wichtige Datenstrukturen, die verwendet werden, um Stapel von Datenpunkten zu speichern.
Java lernen? Lassen Sie Arrays Ihre Daten problemlos verarbeiten.
Weiter lesen
- Programmierung
- Java
- Codierungs-Tutorials
Jerome ist Staff Writer bei MakeUseOf. Er behandelt Artikel über Programmierung und Linux. Er ist auch ein Krypto-Enthusiast und behält die Krypto-Industrie immer im Auge.
Abonnieren Sie unseren Newsletter
Abonnieren Sie unseren Newsletter für technische Tipps, Rezensionen, kostenlose E-Books und exklusive Angebote!
Noch ein Schritt…!
Bitte bestätigen Sie Ihre E-Mail-Adresse in der E-Mail, die wir Ihnen gerade gesendet haben.