Überschreiben der Java-Methode
Überschreiben der Java-Methode
In diesem Tutorial lernen wir anhand von Beispielen das Überschreiben von Methoden in Java kennen.
Im letzten Tutorial haben wir etwas über Vererbung gelernt. Vererbung ist eine OOP-Eigenschaft, die es uns ermöglicht, eine neue Klasse (Unterklasse) von einer bestehenden Klasse (Oberklasse) abzuleiten. Die Unterklasse erbt die Attribute und Methoden der Oberklasse.
Wenn nun dieselbe Methode sowohl in der Oberklasse als auch in der Unterklasse definiert ist, überschreibt die Methode der Unterklasse class die Methode der Oberklasse. Dies wird als Methodenüberschreibung bezeichnet.
Beispiel 1:Methodenüberschreibung
class Animal {
public void displayInfo() {
System.out.println("I am an animal.");
}
}
class Dog extends Animal {
@Override
public void displayInfo() {
System.out.println("I am a dog.");
}
}
class Main {
public static void main(String[] args) {
Dog d1 = new Dog();
d1.displayInfo();
}
}
Ausgabe :
I am a dog.
Im obigen Programm ist der displayInfo()
-Methode ist sowohl in Animal vorhanden Oberklasse und der Hund Unterklasse.
Wenn wir displayInfo()
anrufen mit d1 Objekt (Objekt der Unterklasse), die Methode innerhalb der Unterklasse Dog wird genannt. Die displayInfo()
Methode der Unterklasse überschreibt dieselbe Methode der Oberklasse.
Beachten Sie die Verwendung von @Override
Anmerkung in unserem Beispiel. In Java sind Annotationen die Metadaten, die wir verwendet haben, um dem Compiler Informationen bereitzustellen. Hier die @Override
Annotation gibt dem Compiler an, dass die Methode nach dieser Annotation die Methode der Oberklasse überschreibt.
Es ist nicht zwingend erforderlich, @Override
zu verwenden . Wenn wir dies jedoch verwenden, sollte die Methode allen Regeln des Überschreibens folgen. Andernfalls generiert der Compiler einen Fehler.
Java-Überschreibungsregeln
- Sowohl die Oberklasse als auch die Unterklasse müssen den gleichen Methodennamen, den gleichen Rückgabetyp und die gleiche Parameterliste haben.
- Wir können die als
final
deklarierte Methode nicht überschreiben undstatic
. - Wir sollten abstrakte Methoden der Oberklasse immer überschreiben (wird in späteren Tutorials besprochen).
super-Schlüsselwort in Java-Überschreibung
Eine häufig gestellte Frage beim Überschreiben in Java ist:
Können wir nach dem Überschreiben auf die Methode der Oberklasse zugreifen?
Nun, die Antwort ist Ja . Um von der Unterklasse auf die Methode der Oberklasse zuzugreifen, verwenden wir den super
Schlüsselwort.
Beispiel 2:Verwendung des Super-Keywords
class Animal {
public void displayInfo() {
System.out.println("I am an animal.");
}
}
class Dog extends Animal {
public void displayInfo() {
super.displayInfo();
System.out.println("I am a dog.");
}
}
class Main {
public static void main(String[] args) {
Dog d1 = new Dog();
d1.displayInfo();
}
}
Ausgabe :
I am an animal. I am a dog.
Im obigen Beispiel die Unterklasse Dog überschreibt die Methode displayInfo()
der Oberklasse Animal .
Wenn wir die Methode displayInfo()
aufrufen mit d1 Objekt des Hundes Unterklasse, die Methode innerhalb des Dog Unterklasse wird aufgerufen; die Methode innerhalb der Oberklasse wird nicht aufgerufen.
Innerhalb von displayInfo()
des Hundes Unterklasse haben wir super.displayInfo()
verwendet um displayInfo()
anzurufen der Oberklasse.
Es ist wichtig zu beachten, dass Konstruktoren in Java nicht vererbt werden. Daher gibt es in Java keine Konstruktorüberschreibung.
Wir können jedoch den Konstruktor der Oberklasse von ihren Unterklassen aufrufen. Dafür verwenden wir super()
. Um mehr zu erfahren, besuchen Sie Java super keyword.
Zugriffsspezifizierer beim Überschreiben von Methoden
Dieselbe Methode, die in der Oberklasse und ihren Unterklassen deklariert ist, kann unterschiedliche Zugriffsbezeichner haben. Es gibt jedoch eine Einschränkung.
Wir können diese Zugriffsbezeichner nur in Unterklassen verwenden, die einen größeren Zugriff bieten als der Zugriffsbezeichner der Oberklasse. Zum Beispiel
Angenommen, eine Methode myClass()
in der Oberklasse ist protected
deklariert . Dann dieselbe Methode myClass()
in der Unterklasse kann entweder public
sein oder protected
, aber nicht private
.
Beispiel 3:Zugriffsspezifizierer beim Überschreiben
class Animal {
protected void displayInfo() {
System.out.println("I am an animal.");
}
}
class Dog extends Animal {
public void displayInfo() {
System.out.println("I am a dog.");
}
}
class Main {
public static void main(String[] args) {
Dog d1 = new Dog();
d1.displayInfo();
}
}
Ausgabe :
I am a dog.
Im obigen Beispiel die Unterklasse Dog überschreibt die Methode displayInfo()
der Oberklasse Animal .
Wann immer wir displayInfo()
anrufen mit d1 (Objekt der Unterklasse), wird die Methode innerhalb der Unterklasse aufgerufen.
Beachten Sie, dass displayInfo()
wird als protected
deklariert im Tier Oberklasse. Die gleiche Methode hat den public
Zugriffsbezeichner im Dog Unterklasse. Dies ist möglich, weil der public
bietet größeren Zugriff als protected
.
Abstrakte Methoden überschreiben
In Java werden abstrakte Klassen als Oberklasse anderer Klassen erstellt. Und wenn eine Klasse eine abstrakte Methode enthält, muss sie zwingend überschrieben werden.
Wir werden in späteren Tutorials mehr über abstrakte Klassen und das Überschreiben abstrakter Methoden erfahren.
Java
- Java-Operatoren
- Java-Versuch-mit-Ressourcen
- Java-Anmerkungen
- Java-Anmerkungstypen
- String Length() Methode in Java:So finden Sie mit Beispiel
- Java String indexOf() Methode mit Substring &Beispielen
- Java String charAt() Methode mit Beispiel
- Java-String-compareTo()-Methode:Verwendung mit Beispielen
- Java-String enthält()-Methode | Überprüfen Sie die Teilzeichenfolge mit Beispiel
- Java-String-EndsWith()-Methode mit Beispiel