OOP-Prinzipien: Vererbung
Vererbung
Betrachten wir das OOP-Prinzip – 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
123class 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
12345678910111213141516171819package 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
Birderstellt, die in unserem Fall die Elternklasse ist. Diese Klasse besitzt eigene Felder und Methoden; - Es wird eine Klasse
Parroterstellt, die mit dem Schlüsselwortextendsvon der ElternklasseBirderbt. Die KlasseParrotist eine Kindklasse und verfügt über eigene Felder und Methoden. Zusätzlich erbt die KindklasseParrotalle Felder und Methoden der ElternklasseBird; - Im
Parrot-Modul wird ein Objekt der Klassemainerstellt. Dabei kann man die Felder sowohl der Eltern- als auch der Kindklasse initialisieren. Zuerst werden die Felder der ElternklasseBirdinitialisiert, anschließend die Felder der KindklasseParrot. Danach 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.
Vererbungsregeln
-
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 gefallen. Es soll eine bestimmte Methode anders funktionieren als in der Elternklasse.
Um eine Methode der Elternklasse zu überschreiben, wird @Override darüber geschrieben:
Parrot.java
1234@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 jemand Ihre Klasse erbt, verwenden Sie den final-Modifikator davor.
Zum Beispiel:
Bird.java
Parrot.java
123public 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 Merkmale der Vererbung. Es handelt sich um ein umfangreiches Thema, das sehr häufig verwendet wird. 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 die Vererbung in Java verhindert werden?
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Can you explain how method overriding works in inheritance?
What is the difference between private and public fields in inheritance?
Why can't Java support multiple inheritance?
Awesome!
Completion rate improved to 4.76
OOP-Prinzipien: Vererbung
Swipe um das Menü anzuzeigen
Vererbung
Betrachten wir das OOP-Prinzip – 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
123class 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
12345678910111213141516171819package 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
Birderstellt, die in unserem Fall die Elternklasse ist. Diese Klasse besitzt eigene Felder und Methoden; - Es wird eine Klasse
Parroterstellt, die mit dem Schlüsselwortextendsvon der ElternklasseBirderbt. Die KlasseParrotist eine Kindklasse und verfügt über eigene Felder und Methoden. Zusätzlich erbt die KindklasseParrotalle Felder und Methoden der ElternklasseBird; - Im
Parrot-Modul wird ein Objekt der Klassemainerstellt. Dabei kann man die Felder sowohl der Eltern- als auch der Kindklasse initialisieren. Zuerst werden die Felder der ElternklasseBirdinitialisiert, anschließend die Felder der KindklasseParrot. Danach 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.
Vererbungsregeln
-
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 gefallen. Es soll eine bestimmte Methode anders funktionieren als in der Elternklasse.
Um eine Methode der Elternklasse zu überschreiben, wird @Override darüber geschrieben:
Parrot.java
1234@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 jemand Ihre Klasse erbt, verwenden Sie den final-Modifikator davor.
Zum Beispiel:
Bird.java
Parrot.java
123public 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 Merkmale der Vererbung. Es handelt sich um ein umfangreiches Thema, das sehr häufig verwendet wird. 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 die Vererbung in Java verhindert werden?
Danke für Ihr Feedback!