Kursinhalt
Java Oop
Java Oop
OOP-Prinzipien: Vererbung
Vererbung
Betrachten wir das Prinzip der OOP – Vererbung.
Vererbung ist ein Mechanismus, der die Erstellung von Klassen auf Basis einer anderen Klasse ermöglicht.
Die Klasse, die als Grundlage dient, wird als Elternklasse oder Superklasse bezeichnet;
Die auf Basis der Elternklasse erstellte Klasse wird als Kindklasse, Subklasse oder Nachfolger bezeichnet.
Somit kann die Kindklasse die Eigenschaften und Merkmale einer anderen Klasse – der Elternklasse (deren Methoden und Variablen) – erben.
Eine Klasse kann mit dem Schlüsselwort extends
vererbt werden. Die Syntax für eine Kindklasse, die von einer Elternklasse erbt, sieht folgendermaßen aus:
Child.java
class Child extends Parent { // properties and methods }
Schauen wir uns ein Beispiel an, wie Vererbung im Code funktioniert. Wir haben eine Klasse Bird
mit bestimmten Feldern und Methoden, und es gibt eine Klasse Parrot
mit eigenen Feldern und Methoden. Ein Papagei ist ein Vogel, daher sollte der Papagei logisch von der Klasse Bird
erben:
Hier ist der Code aus dem Screenshot, überarbeitet für bessere Lesbarkeit und Klarheit:
Bird.java
Parrot.java
Main.java
package animals.birds; public class Bird { public String color; public boolean canFly; public int maxAge; public void eat() { System.out.println("The bird is eating"); } public void fly() { if (canFly) { System.out.println("The bird is flying!"); } else { System.out.println("This bird can't fly :("); } } }
Lassen Sie uns verstehen, was auf diesen Abbildungen passiert:
Es wird eine Klasse
Bird
erstellt, die in unserem Fall die Elternklasse ist. Diese Klasse verfügt über eigene Felder und Methoden;Es wird eine Klasse
Parrot
erstellt, die mit dem Schlüsselwortextends
von der ElternklasseBird
erbt. Die KlasseParrot
ist eine Kindklasse und besitzt eigene Felder und Methoden. Zusätzlich erbt die KindklasseParrot
alle Felder und Methoden der ElternklasseBird
;Im
Parrot
-Modul wird ein Objekt der Klassemain
erstellt. Dabei können die Felder sowohl der Eltern- als auch der Kindklasse initialisiert werden. Zuerst werden die Felder der ElternklasseBird
initialisiert, danach die Felder der KindklasseParrot
. Anschließend werden die Methoden aufgerufen: zuerst die Methoden der Elternklasse, dann die Methode der Kindklasse.
So wurde durch Vererbung die Klasse Bird
geerbt.
Warum machen wir das?
Wenn es viele verschiedene Unterklassen von Bird
gibt, nicht nur Parrot
, sondern zum Beispiel auch Pigeon
und Penguin
, entstehen viele doppelte Felder wie boolean canFly
. Das erste, wobei Vererbung hilft, ist das Vermeiden von doppelten Codefragmenten.
Darüber hinaus wird die Lesbarkeit deutlich verbessert. In der Praxis begegnet man der Klasse Bird
und ihren Unterklassen selten direkt, aber Vererbung wird häufig verwendet, insbesondere mit Interfaces.
Hinweis
Sie werden im nächsten Abschnitt dieses Kurses mehr über Interfaces erfahren.
Regeln der Vererbung
Es kann nur eine Klasse geerbt werden. Java unterstützt keine Mehrfachvererbung. Eine Klasse kann nur eine Elternklasse haben;
Alles wird außer
private
-Variablen und -Methoden vererbt.
Hinweis
Sie können nicht von sich selbst erben!
Früher wurde erwähnt, dass eine Unterklasse Zugriff auf alle Variablen und Methoden der Elternklasse hat. Das ist jedoch nicht ganz korrekt.
Tatsächlich sind alle Methoden und Variablen, die mit dem private
-Modifikator versehen sind, für die Unterklasse nicht zugänglich.
Überschreiben der Methode der Elternklasse.
Angenommen, eine geerbte Klasse enthält bestimmte Teile des Codes, die nicht gewünscht sind. Beispielsweise soll eine bestimmte Methode anders funktionieren als in der Elternklasse.
Um eine Methode der Elternklasse zu überschreiben, wird @Override
darüber geschrieben:
Parrot.java
@Override public void eat() { System.out.println("The parrot is eating"); }
Im obigen Code haben wir die Methode der Elternklasse überschrieben, und nun wird beim Aufruf dieser Methode aus der Kindklasse die überschriebene Methode ausgeführt!
Verhindern der Vererbung.
Wenn Sie nicht möchten, dass Ihre Klasse vererbt wird, verwenden Sie den final
-Modifikator davor.
Zum Beispiel:
Bird.java
Parrot.java
public final class Bird { // fields and methods }
Auf diese Weise haben wir durch die Verwendung des Schlüsselworts final
die Vererbung der Klasse Bird
untersagt.
Dies sind nur die grundlegenden Regeln und Eigenschaften der Vererbung. Es handelt sich um ein umfangreiches Thema, das Sie sehr häufig verwenden werden. Im Verlauf des Kurses werden Sie mit weiteren Aspekten der Vererbung vertraut gemacht und diese häufiger anwenden.
1. Warum benötigen wir Vererbung in Java?
2. Von wie vielen Klassen können wir gleichzeitig erben?
3. Wie kann man Vererbung in Java verhindern?
Danke für Ihr Feedback!