Überladen und Überschreiben in Java Methoden, Regeln und Einschränkungen in Java

Inhaltsverzeichnis:

Anonim

Einführung in das Überladen und Überschreiben in Java

Schauen wir uns zunächst an, was der Name auf den ersten Blick vermuten lässt. „Überladen“ bedeutet: Die ursprüngliche Funktionalität von jemandem zusätzlich belasten, oder? Während "Überschreiben" bedeutet: Bereitstellung neuer Funktionen zusätzlich zu den ursprünglichen Funktionen aller. In diesem Artikel werden wir uns ausführlich mit dem Überladen und Überschreiben in Java befassen. Ja, auch in Java werden diese auf die gleiche Weise programmgesteuert implementiert. Schauen wir uns das einzeln an.

Überladen in Java

Wenn eine Java-Klasse mehrere Methoden mit demselben Namen, aber mit unterschiedlichen Argumenten hat, wird dies als Methodenüberladung bezeichnet. Indem wir den Namen beibehalten, verbessern wir nur die Lesbarkeit von Programmcode. Angenommen, wir müssen eine Additionsoperation für bestimmte Zahlen ausführen. Sagen wir, der Name unserer Methode ist "addition ()". Hier kann die Addition zwischen zwei Zahlen, drei Zahlen oder mehr erfolgen. Abhängig davon, wie viele Zahlen für eine zusätzliche Operation benötigt werden, können wir die Argumente (oder Parameter) der Funktion ändern. Wenn Sie jedoch stattdessen unterschiedliche Methoden für die unterschiedliche Anzahl von Argumenten schreiben würden, wäre es schwierig zu erkennen, da der Name unterschiedlich wäre. Durch Überladung erreichen wir daher eine bessere Lesbarkeit unseres Codes. Die Frage ist nun, wie wir eine Überlastung erreichen können.

Schauen wir uns diese nacheinander mit Beispielcodes an.

Methode 1 - Durch Ändern der Anzahl der Parameter

Also werden wir hier einige Zahlen addieren. Dazu erstellen wir eine Klasse mit dem Namen "AdditionOperation". Lassen Sie uns in dieser Klasse zwei Methoden mit dem Namen "addition ()" haben. Bei einer dieser Methoden werden zwei Zahlen addiert. In der anderen werden wir die Addition von drei Zahlen durchführen. Dies erreichen wir, indem wir einfach die Anzahl der Parameter in diesen Methoden ändern, aber den Namen beibehalten. Auf diese Weise überladen wir hier die Methode „addition ()“.

Code:

public class AdditionOperation (
static int addition(int num1, int num2)(return num1+num2;) //function declarationand definition for addition of two numbers
static int addition(int num1, int num2, int num3)(return num1+num2+num3;) //function declarationand definition for addition of three numbers
public static void main(String args()) (
system.out.printin(addition(35, 36)); //method overloading
system.out.printin(addition(35, 36, 37)); //method overloading, we are calling same methods but for different number of arguments.
)
)

Ausgabe:

Methode 2 - Durch Ändern des Datentyps

Also werden wir hier Additionsoperationen für verschiedene Typen ausführen, zum Beispiel zwischen Integer-Typ und Double-Typ. Dazu erstellen wir eine Klasse mit dem Namen "AdditionOperation". Lassen Sie uns innerhalb dieser Klasse zwei Methoden mit dem Namen "addition ()" haben. Bei einer dieser Methoden werden zwei ganze Zahlen addiert. In der anderen werden wir die Addition von zwei Doppel durchführen. Dies erreichen wir, indem wir einfach den Parametertyp in diesen Methoden ändern, aber den Namen beibehalten. Auf diese Weise überladen wir hier die Methode „addition ()“.

Code:

public class additionOperation (
static int addition(int num1, int num2)(return num1+num2;) //function declarationand definition for addition of two numbers
static double addition(double num1, num2)(return num1+num2;) //function declarationand definition for addition of three numbers
public static void main(String args()) (
system.out.printin(addition(35, 36)); //method overloading
system.out.printin(addition(35.5, 36.6)); //method overloading, we are calling same methods but for different type of arguments.
)
)

Ausgabe:

Zum Überladen zu beachtende Punkte

  • Das Überladen in Java ist im Grunde eine "polymMethod-Überladungsmethode zur Kompilierungszeit in C # -Orphismus". Der Polymorphismus zur Kompilierungszeit in Java wird auch als "Static Method Dispatch" oder "Early Binding" bezeichnet. Was meine ich mit diesem Jargon?
  • Polymorphismus ist, wie der Name schon sagt, eine Fähigkeit, viele Formen anzunehmen (poly: many, morph: form). Hier erfolgt also die Verknüpfung oder Bindung der überladenen Funktion und des Objekts zur Kompilierzeit. Daher wird es als Kompilierzeit-Polymorphismus bezeichnet.
  • Grundsätzlich erfolgt die Bindung der Funktion an das Objekt früh vor der Laufzeit (dh während der Kompilierungszeit), daher wird sie auch als "Early Binding" bezeichnet.
  • Statischer Versand ist eine Art von Polymorphismus oder Methodenversand, der angibt, wie Java auswählt, welche Funktionalität der Methode in der Kompilierungszeit verwendet wird. (Ich meine, ob in unserem Codierungsbeispiel zwei oder drei Zahlen hinzugefügt werden). Der Name wird daher auch als statische Methode Dispatch bezeichnet.

In Java überschreiben

  • Wenn eine Java-Unterklasse oder eine untergeordnete Klasse eine Methode mit demselben Namen und denselben Parametern oder Argumenten sowie einem ähnlichen Rückgabetyp wie eine Methode hat, die in der übergeordneten Klasse oder der übergeordneten Klasse vorhanden ist, können wir die Methode der untergeordneten Klasse als aufrufen Eine überschriebene Methode der Methode der übergeordneten Klasse.
  • Angenommen, wir müssen einige Anzeigeoperationen entsprechend ihrem Klassentyp ausführen. Ich meine, wenn ich die Methode einer übergeordneten Klasse aufrufe, wird eine Meldung angezeigt, die in einer übergeordneten Klasse definiert ist. Wenn wir jedoch die Methode der untergeordneten Klasse aufrufen, überschreibt sie die Anzeigemeldung der übergeordneten Klasse und zeigt die Anzeigemeldung an, die in der Methode der untergeordneten Klasse definiert ist. Abhängig davon, welches Display angezeigt werden soll, können wir die zugehörige Klasse (Eltern oder Kind) aufrufen. Hier ändern wir nicht den Methodennamen, das Argument und den Rückgabetyp. Wir ändern gerade die Funktionalität der Methode in der Kindklasse. Wenn Sie jedoch keine Überschreibung vornehmen, dh wenn Sie keine spezielle Implementierung der untergeordneten Methode angeben, wird beim Aufrufen der Methode dieselbe Meldung angezeigt, die in einer übergeordneten Klasse vorhanden ist.
  • Beim Schreiben von Code wird die Annotation @ Override vor der zu überschreibenden Methode verwendet. Die Annotation @Override teilt dem Compiler mit, dass die Methode eine in einer Superklasse deklarierte Methode überschreiben soll. Dies ist zwar nicht zwingend erforderlich, hilft jedoch, Fehler zu vermeiden. Wenn eine mit @Override kommentierte Methode eine Methode nicht überschreibt, generiert der Compiler einen Fehler.

Regeln für das Überschreiben von Java-Methoden

  1. Die Methode muss denselben Namen wie in der übergeordneten Klasse haben
  2. Die Methode muss denselben Parameter wie in der übergeordneten Klasse haben.
  3. Es muss eine IS-A-Beziehung bestehen (Vererbung).

Code:

//Parent or Super class
class Parent (
public void display() (
system.out.printin("Hello, I am from parent class");
)
)
//Child or sub class
class Sub extends Parent (
//Below method overrides the Parent display() method
// @override
public void display() (
system.out.printin("Hello, I am from child class");
)
)
//Driver class
public class Overriding (
public static void main?(String args())
(
Parent superObject = new Parent ();
superObject.display(); // Super class method is called
Parent subObject = new Sub();
subObject.display(); //Child class method is called by a parent type reference: this is functionality of method overriding
Sub subObject2 = new Sub(); //Child class method is called by a child type reference
subObject2.display();
)
)

Ausgabe:

Einschränkungen in der Methode Überschreiben:

  1. Private Methoden der übergeordneten Klasse können nicht überschrieben werden.
  2. Endgültige Methoden können nicht überschrieben werden
  3. Statische Methoden können nicht überschrieben werden

Für das Überschreiben zu beachtende Punkte

  • Überladen in Java ist im Grunde ein "Laufzeit-Polymorphismus". Der Laufzeit-Polymorphismus in Java wird auch als "Dynamic Method Dispatch" oder "Late Binding" bezeichnet. Also, was ist mit diesem Jargon gemeint?
  • Polymorphismus ist, wie der Name schon sagt, eine Fähigkeit, viele Formen anzunehmen (poly: many, morph: form). Also, hier wird zur Laufzeit ein Aufruf an eine überladene Funktion mit dem Objekt erledigt. Daher wird Laufzeitpolymorphismus genannt.
  • Grundsätzlich erfolgt die Bindung der Funktion an das Objekt erst spät nach dem Kompilieren (dh während der Laufzeit). daher wird es auch als "späte Bindung" bezeichnet.
  • Dynamischer Versand ist eine Art von Polymorphismus oder Methodenversand, der angibt, wie Java auswählt, welche Funktionalität der Methode zur Laufzeit verwendet wird. Daher wird der Name auch als Dynamic Method Dispatch bezeichnet.

Fazit

Damit ist das Erlernen des Themas „Überladen und Überschreiben in Java“ abgeschlossen. Schreiben Sie die in den obigen Beispielen genannten Codes in den Java-Compiler und überprüfen Sie die Ausgabe. Das Erlernen von Codes ist unvollständig, wenn Sie nicht selbst Hand anlegen, da dies Ihre Codierungsfähigkeiten verbessert. Viel Spaß beim Programmieren !!

Empfohlene Artikel

Dies ist eine Anleitung zum Überladen und Überschreiben in Java. Hier werden Methoden in Overloading sowie Regeln und Einschränkungen von Overriding in Java erläutert. Sie können auch unsere anderen Artikelvorschläge durchgehen, um mehr zu erfahren -

  1. Überschreiben in JavaScript
  2. Überschreiben in OOPs
  3. Was sind Generika in Java?
  4. Überschreiben in PHP
  5. Python-Überladung
  6. Vererbung in PHP
  7. Vollständiger Leitfaden zur Vererbung in Python
  8. Überladen und Überschreiben in C #
  9. Typen und Fehlerbehandlung in JavaScript
  10. Beispiele und Funktionsweise von Generika in C #
  11. Funktion und Regeln des Überschreibens in Python