Java, Vererbung ist eine wichtige Säule von OOP (Object-Oriented Programming). Dabei handelt es sich um den Mechanismus in Java, der es einer Klasse ermöglicht, die Funktionen (Felder und Methoden) einer anderen Klasse zu erben. In Java bedeutet Vererbung das Erstellen neuer Klassen basierend auf vorhandenen. Eine Klasse, die von einer anderen Klasse erbt, kann die Methoden und Felder dieser Klasse wiederverwenden. Darüber hinaus können Sie Ihrer aktuellen Klasse auch neue Felder und Methoden hinzufügen.
Warum brauchen wir Java-Vererbung?
- Wiederverwendbarkeit des Codes: Der in der Superklasse geschriebene Code ist allen Unterklassen gemeinsam. Untergeordnete Klassen können den Code der übergeordneten Klasse direkt verwenden.
- Methodenüberschreibung: Methodenüberschreibung ist nur durch Vererbung erreichbar. Dies ist eine der Möglichkeiten, mit denen Java Laufzeitpolymorphismus erreicht.
- Abstraktion: Das Konzept der Abstraktion, bei dem wir nicht alle Details angeben müssen, wird durch Vererbung erreicht. Abstraktion Zeigt dem Benutzer lediglich die Funktionalität an.
Wichtige Terminologien, die bei der Java-Vererbung verwendet werden
- Klasse: Eine Klasse ist eine Menge von Objekten, die gemeinsame Merkmale/Verhalten und gemeinsame Eigenschaften/Attribute aufweisen. Die Klasse ist keine reale Entität. Es handelt sich lediglich um eine Vorlage, einen Bauplan oder einen Prototyp, aus dem Objekte erstellt werden.
- Superklasse/Elternklasse: Die Klasse, deren Merkmale geerbt werden, wird als Superklasse (oder Basisklasse oder übergeordnete Klasse) bezeichnet.
- Unterklasse/Unterklasse: Die Klasse, die die andere Klasse erbt, wird als Unterklasse (oder abgeleitete Klasse, erweiterte Klasse oder untergeordnete Klasse) bezeichnet. Die Unterklasse kann zusätzlich zu den Feldern und Methoden der Oberklasse eigene Felder und Methoden hinzufügen.
- Wiederverwendbarkeit: Vererbung unterstützt das Konzept der Wiederverwendbarkeit, d. h. wenn wir eine neue Klasse erstellen möchten und es bereits eine Klasse gibt, die einen Teil des gewünschten Codes enthält, können wir unsere neue Klasse von der vorhandenen Klasse ableiten. Auf diese Weise verwenden wir die Felder und Methoden der vorhandenen Klasse wieder.
Wie verwende ich Vererbung in Java?
Der erweitert das Schlüsselwort wird in Java zur Vererbung verwendet. Die Verwendung des Schlüsselworts „extens“ zeigt an, dass Sie von einer vorhandenen Klasse abgeleitet sind. Mit anderen Worten bezieht sich „extends“ auf eine erhöhte Funktionalität.
Schlaf in js
Syntax :
class DerivedClass extends BaseClass { //methods and fields }>
Vererbung in Java-Beispiel
Beispiel: Im folgenden Vererbungsbeispiel ist die Klasse Bicycle eine Basisklasse, die Klasse MountainBike eine abgeleitete Klasse, die die Klasse Bicycle erweitert, und die Klasse Test eine Treiberklasse zum Ausführen des Programms.
Java // Java program to illustrate the // concept of inheritance // base class class Bicycle { // the Bicycle class has two fields public int gear; public int speed; // the Bicycle class has one constructor public Bicycle(int gear, int speed) { this.gear = gear; this.speed = speed; } // the Bicycle class has three methods public void applyBrake(int decrement) { speed -= decrement; } public void speedUp(int increment) { speed += increment; } // toString() method to print info of Bicycle public String toString() { return ('No of gears are ' + gear + '
' + 'speed of bicycle is ' + speed); } } // derived class class MountainBike extends Bicycle { // the MountainBike subclass adds one more field public int seatHeight; // the MountainBike subclass has one constructor public MountainBike(int gear, int speed, int startHeight) { // invoking base-class(Bicycle) constructor super(gear, speed); seatHeight = startHeight; } // the MountainBike subclass adds one more method public void setHeight(int newValue) { seatHeight = newValue; } // overriding toString() method // of Bicycle to print more info @Override public String toString() { return (super.toString() + '
seat height is ' + seatHeight); } } // driver class public class Test { public static void main(String args[]) { MountainBike mb = new MountainBike(3, 100, 25); System.out.println(mb.toString()); } }>
Ausgabe
No of gears are 3 speed of bicycle is 100 seat height is 25>
Wenn im obigen Programm ein Objekt der MountainBike-Klasse erstellt wird, erhält eine Kopie aller Methoden und Felder der Oberklasse Speicher in diesem Objekt. Deshalb können wir über das Objekt der Unterklasse auch auf die Mitglieder einer Oberklasse zugreifen.
Bitte beachten Sie, dass bei der Vererbung nur das Objekt der Unterklasse erstellt wird, nicht die Oberklasse. Weitere Informationen finden Sie unter Java-Objekterstellung einer geerbten Klasse .
Beispiel 2: Im folgenden Vererbungsbeispiel ist die Klasse „Employee“ eine Basisklasse, die Klasse „Engineer“ eine abgeleitete Klasse, die die Klasse „Employee“ erweitert, und die Klasse „Test“ eine Treiberklasse zum Ausführen des Programms.
Java // Java Program to illustrate Inheritance (concise) import java.io.*; // Base or Super Class class Employee { int salary = 60000; } // Inherited or Sub Class class Engineer extends Employee { int benefits = 10000; } // Driver Class class Gfg { public static void main(String args[]) { Engineer E1 = new Engineer(); System.out.println('Salary : ' + E1.salary + '
Benefits : ' + E1.benefits); } }>
Ausgabe
Salary : 60000 Benefits : 10000>
Anschauliches Bild des Programms:
Wolf gegen Fuchs

In der Praxis, Vererbung und Polymorphismus werden in Java zusammen verwendet, um eine schnelle Leistung und Lesbarkeit des Codes zu erreichen.
Java-Vererbungstypen
Nachfolgend sind die verschiedenen Arten der Vererbung aufgeführt, die von Java unterstützt werden.
- Einzelvererbung
- Mehrstufige Vererbung
- Hierarchische Vererbung
- Mehrfachvererbung
- Hybride Vererbung
1. Einzelvererbung
Bei der Einzelvererbung wird eine Unterklasse von nur einer Oberklasse abgeleitet. Sie erbt die Eigenschaften und das Verhalten einer Single-Parent-Klasse. Manchmal wird es auch als einfache Vererbung bezeichnet. In der folgenden Abbildung ist „A“ eine übergeordnete Klasse und „B“ eine untergeordnete Klasse. Die Klasse „B“ erbt alle Eigenschaften der Klasse „A“.

Einzelvererbung
Java // Java program to illustrate the // concept of single inheritance import java.io.*; import java.lang.*; import java.util.*; // Parent class class One { public void print_geek() { System.out.println('Geeks'); } } class Two extends One { public void print_for() { System.out.println('for'); } } // Driver class public class Main { // Main function public static void main(String[] args) { Two g = new Two(); g.print_geek(); g.print_for(); g.print_geek(); } }>
Ausgabe
Geeks for Geeks>
2. Mehrstufige Vererbung
Bei der mehrstufigen Vererbung erbt eine abgeleitete Klasse eine Basisklasse und fungiert neben der abgeleiteten Klasse auch als Basisklasse für andere Klassen. In der folgenden Abbildung dient Klasse A als Basisklasse für die abgeleitete Klasse B, die wiederum als Basisklasse für die abgeleitete Klasse C dient. In Java kann eine Klasse nicht direkt auf die Klasse zugreifen Mitglieder der Großeltern .

Mehrstufige Vererbung
Java // Importing required libraries import java.io.*; import java.lang.*; import java.util.*; // Parent class One class One { // Method to print 'Geeks' public void print_geek() { System.out.println('Geeks'); } } // Child class Two inherits from class One class Two extends One { // Method to print 'for' public void print_for() { System.out.println('for'); } } // Child class Three inherits from class Two class Three extends Two { // Method to print 'Geeks' public void print_lastgeek() { System.out.println('Geeks'); } } // Driver class public class Main { public static void main(String[] args) { // Creating an object of class Three Three g = new Three(); // Calling method from class One g.print_geek(); // Calling method from class Two g.print_for(); // Calling method from class Three g.print_lastgeek(); } }>
Ausgabe
Geeks for Geeks>
3. Hierarchische Vererbung
Bei der hierarchischen Vererbung dient eine Klasse als Superklasse (Basisklasse) für mehr als eine Unterklasse. Im Bild unten dient Klasse A als Basisklasse für die abgeleiteten Klassen B, C und D.
// Java program to illustrate the // concept of Hierarchical inheritance class A { public void print_A() { System.out.println('Class A'); } } class B extends A { public void print_B() { System.out.println('Class B'); } } class C extends A { public void print_C() { System.out.println('Class C'); } } class D extends A { public void print_D() { System.out.println('Class D'); } } // Driver Class public class Test { public static void main(String[] args) { B obj_B = new B(); obj_B.print_A(); obj_B.print_B(); C obj_C = new C(); obj_C.print_A(); obj_C.print_C(); D obj_D = new D(); obj_D.print_A(); obj_D.print_D(); } }>
Ausgabe
Class A Class B Class A Class C Class A Class D>
4. Mehrfachvererbung ( Durch Schnittstellen)
In Mehrere Erbschaften , kann eine Klasse mehr als eine Oberklasse haben und Funktionen von allen übergeordneten Klassen erben. Bitte beachten Sie, dass Java dies tut nicht Unterstützung mehrere Erbschaften mit Unterricht. In Java können wir Mehrfachvererbungen nur durch erreichen Schnittstellen . Im Bild unten wird Klasse C von den Schnittstellen A und B abgeleitet.

Mehrfachvererbung
Java // Java program to illustrate the // concept of Multiple inheritance import java.io.*; import java.lang.*; import java.util.*; interface One { public void print_geek(); } interface Two { public void print_for(); } interface Three extends One, Two { public void print_geek(); } class Child implements Three { @Override public void print_geek() { System.out.println('Geeks'); } public void print_for() { System.out.println('for'); } } // Drived class public class Main { public static void main(String[] args) { Child c = new Child(); c.print_geek(); c.print_for(); c.print_geek(); } }>
Ausgabe
Geeks for Geeks>
5. Hybride Vererbung
Es handelt sich um eine Mischung aus zwei oder mehr der oben genannten Erbarten. Da Java keine Mehrfachvererbung mit Klassen unterstützt, ist auch eine Hybridvererbung mit Mehrfachvererbung mit Klassen nicht möglich. In Java können wir eine hybride Vererbung nur durch erreichen Schnittstellen wenn wir Mehrfachvererbung einbeziehen möchten, um die Hybridvererbung zu implementieren.
Es ist jedoch wichtig zu beachten, dass die Hybridvererbung nicht unbedingt die ausschließliche Verwendung der Mehrfachvererbung erfordert. Dies kann durch eine Kombination aus mehrstufiger Vererbung und hierarchischer Vererbung mit Klassen sowie hierarchischer und einzelner Vererbung mit Klassen erreicht werden. Daher ist es tatsächlich möglich, die Hybridvererbung allein mithilfe von Klassen zu implementieren, ohne auf Mehrfachvererbungstypen angewiesen zu sein.

Hybride Vererbung
Anhängen einer Zeichenfolge in Java
Java IS-A-Beziehungstyp
IS-A ist eine Art zu sagen: Dieses Objekt ist ein Typ dieses Objekts. Sehen wir uns an, wie das Schlüsselwort „Extens“ verwendet wird, um eine Vererbung zu erreichen.
Java public class SolarSystem { } public class Earth extends SolarSystem { } public class Mars extends SolarSystem { } public class Moon extends Earth { }>
Basierend auf dem obigen Beispiel gilt in objektorientierter Hinsicht Folgendes:
- SolarSystem ist die Oberklasse der Erdklasse.
- SolarSystem ist die Oberklasse der Mars-Klasse.
- Erde und Mars sind Unterklassen der SolarSystem-Klasse.
- Moon ist die Unterklasse der Klassen Earth und SolarSystem.
class SolarSystem { } class Earth extends SolarSystem { } class Mars extends SolarSystem { } public class Moon extends Earth { public static void main(String args[]) { SolarSystem s = new SolarSystem(); Earth e = new Earth(); Mars m = new Mars(); System.out.println(s instanceof SolarSystem); System.out.println(e instanceof Earth); System.out.println(m instanceof SolarSystem); } }>
Ausgabe
true true true>
Was kann in einer Unterklasse getan werden?
In Unterklassen können wir Mitglieder unverändert erben, ersetzen, ausblenden oder durch neue Mitglieder ergänzen:
- Die geerbten Felder können wie alle anderen Felder direkt verwendet werden.
- Wir können in der Unterklasse neue Felder deklarieren, die nicht in der Oberklasse sind.
- Die geerbten Methoden können direkt so verwendet werden, wie sie sind.
- Wir können ein neues schreiben Beispiel Methode in der Unterklasse, die dieselbe Signatur wie die in der Oberklasse hat überragend es (wie im Beispiel oben, toString() Methode wird überschrieben).
- Wir können ein neues schreiben statisch Methode in der Unterklasse, die dieselbe Signatur wie die in der Oberklasse hat verstecken Es.
- Wir können in der Unterklasse neue Methoden deklarieren, die nicht in der Oberklasse sind.
- Wir können einen Unterklassenkonstruktor schreiben, der den Konstruktor der Oberklasse entweder implizit oder mithilfe des Schlüsselworts aufruft super .
Vorteile der Vererbung in Java:
- Wiederverwendbarkeit von Code: Vererbung ermöglicht die Wiederverwendung von Code und reduziert die Menge an Code, die geschrieben werden muss. Die Unterklasse kann die Eigenschaften und Methoden der Oberklasse wiederverwenden und so die Duplizierung von Code reduzieren.
- Abstraktion: Vererbung ermöglicht die Erstellung abstrakter Klassen, die eine gemeinsame Schnittstelle für eine Gruppe verwandter Klassen definieren. Dies fördert die Abstraktion und Kapselung und erleichtert die Wartung und Erweiterung des Codes.
- Klassenhierarchie: Vererbung ermöglicht die Erstellung einer Klassenhierarchie, die zur Modellierung realer Objekte und ihrer Beziehungen verwendet werden kann.
- Polymorphismus: Vererbung ermöglicht Polymorphismus, also die Fähigkeit eines Objekts, mehrere Formen anzunehmen. Unterklassen können die Methoden der Oberklasse überschreiben, wodurch sie ihr Verhalten auf unterschiedliche Weise ändern können.
Nachteile der Vererbung in Java:
- Komplexität: Durch Vererbung kann der Code komplexer und schwerer verständlich werden. Dies gilt insbesondere dann, wenn die Vererbungshierarchie tief ist oder wenn Mehrfachvererbungen verwendet werden.
- Enge Kopplung: Durch Vererbung entsteht eine enge Kopplung zwischen der Superklasse und der Unterklasse, wodurch es schwierig wird, Änderungen an der Superklasse vorzunehmen, ohne die Unterklasse zu beeinträchtigen.
Abschluss
Lassen Sie uns einige wichtige Punkte aus dem Artikel überprüfen, die unten aufgeführt sind:
- Standard-Superklasse : Außer Objekt Klasse, die keine Oberklasse hat, jede Klasse hat genau eine direkte Oberklasse (einfache Vererbung). In Ermangelung einer anderen expliziten Oberklasse ist jede Klasse implizit eine Unterklasse der Object-Klasse.
- Superklasse kann nur eine sein: Eine Oberklasse kann beliebig viele Unterklassen haben. Aber eine Unterklasse kann nur haben eins Superklasse. Dies liegt daran, dass Java keine Mehrfachvererbung mit Klassen unterstützt. Obwohl es sich um Schnittstellen handelt, werden von Java Mehrfachvererbungen unterstützt.
- Konstruktoren erben: Eine Unterklasse erbt alle Mitglieder (Felder, Methoden und verschachtelte Klassen) von ihrer Oberklasse. Konstruktoren sind keine Mitglieder und werden daher nicht von Unterklassen geerbt. Der Konstruktor der Oberklasse kann jedoch von der Unterklasse aufgerufen werden.
- Vererbung privater Mitglieder: Eine Unterklasse erbt nicht die privaten Mitglieder ihrer übergeordneten Klasse. Wenn die Oberklasse jedoch über öffentliche oder geschützte Methoden (wie Getter und Setter) für den Zugriff auf ihre privaten Felder verfügt, können diese auch von der Unterklasse verwendet werden.
FAQs zur Vererbung
1. Was ist Vererbung in Java?
Vererbung ist ein Konzept von OOPs, bei dem eine Klasse von einer anderen Klasse erbt, die die Methoden und Felder der übergeordneten Klasse wiederverwenden kann.
2. Welche 4 Arten der Vererbung gibt es in Java?
Es gibt Single, Multiple, Multilevel, Hierarchical und Hybrid
3. Wozu dient das Schlüsselwort „extend“?
Das Schlüsselwort Extend wird zum Vererben einer Klasse in eine andere verwendet.
4. Was ist ein Beispiel für Vererbung in Java?
Ein reales Beispiel für Vererbung in Java ist unten aufgeführt:
CSS-Umbruchtext
Betrachten Sie eine Gruppe von Fahrzeugen. Sie müssen Klassen für Bus, Auto und LKW erstellen. Die Methoden FuelAmount(), Capacity() und ApplyBrakes() sind für alle drei Klassen gleich.
Verwendete Referenzen:
- Head First Java von Kathy Sierra und Bert Bates
- Java: Ein Leitfaden für Anfänger von Herbert Schildt
- Java: Die vollständige Referenz von Herbert Schildt
- Effektives Java von Joshua Bloch
- Java: Die guten Teile von Jim Waldo.