Polymorphismus in Java: Methoden überladen oder überschreiben

Polymorphismus in Java: Methoden überladen oder überschreiben

Das Überladen und Überschreiben von Methoden sind die beiden Möglichkeiten, mit denen Java Polymorphismus demonstriert. Polymorphismus kommt von einer Kombination zweier griechischer Wörter: „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.

Verwandt: 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:

class Arithmetic{
int cube(int x){
return x*x*x;
}
double cube(double x){
return x*x*x;
}
float cube(float x){
return x*x*x;
}
public static void main(String[] args){
Arithmetic myMultiplication = new Arithmetic();
System.out.println('The cube of 5 is ' + myMultiplication.cube(5));
System.out.println('The cube of 5.0 is ' + myMultiplication.cube(5.0));
System.out.println('The cube of 0.5 is ' + myMultiplication.cube(0.5));
}
}

Ausgabe:





The cube of 5 is 125
The cube of 5.0 is 125.0
The cube of 0.5 is 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.

class Account{
public void message() {
System.out.println('
Thank you for opening an account with us!');
}
public static void main(String args[]) {
Account myAccount = new Account();
Savings mySavings = new Savings();
FixedDeposit myFixedDepo = new FixedDeposit();
myAccount.message();
mySavings.message();
myFixedDepo.message();
}
}
class Savings extends Account {
public void message() {
System.out.println('
Thank you for opening a Savings account with us!');
}
}
class FixedDeposit extends Account {
public void message() {
System.out.println('
Thank you for opening a Fixed Deposit account with us!');
}
}

Ausgabe:

Thank you for opening an account with us!
Thank you for opening a Savings account with us!
Thank you for opening a Fixed Deposit account with us!

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.

Verwandt: 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 .

final void message (){
System.out.println('
Thank you for opening an account with us!');
}

Wenn eine Unterklasse versucht, sie zu überschreiben, tritt ein Kompilierungsfehler auf.

Idealerweise sollten alle innerhalb eines Konstruktors aufgerufenen Methoden 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 .

class Animal{
public void move() {
System.out.println('
I can move.');
}
}

Unten ist eine Unterklasse, genannt Fisch , das überschreibt Bewegung() :

class Fish extends Animal {
public void move() {
System.out.println('
I can swim.');
super.move();
}
public static void main(String args[]){
Fish Tilapia = new Fish();
Tilapia.move();
}
}

Ausgabe:

Horrorfilme online kostenlos streamen ansehen
I can swim.
I can move.

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 öffentlich .

Einfacher Code mit Polymorphismus

Das Überschreiben und Überladen von Methoden ist wichtig für die Codevereinfachung, und einfacher Code ist eine bewährte Methode.

Wieso den? 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, Sie haben Ihren 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.

Teilen Teilen Tweet Email Erstellen und Ausführen von Operationen auf Arrays in Java

Java lernen? Lassen Sie Arrays Ihre Daten problemlos verarbeiten.

Weiter lesen
Verwandte Themen
  • Programmierung
  • Java
  • Codierungs-Tutorials
Über den Autor Jerome Davidson(22 Artikel veröffentlicht)

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.

Mehr von Jerome Davidson

Abonniere unseren Newsletter

Abonnieren Sie unseren Newsletter für technische Tipps, Rezensionen, kostenlose E-Books und exklusive Angebote!

Klicken Sie hier, um zu abonnieren