Vererbung in Java (mit Beispiel)
Was ist Vererbung?
Erbe ist ein Mechanismus, bei dem eine Klasse das Eigentum einer anderen Klasse erwirbt. Beispielsweise erbt ein Kind die Eigenschaften seiner Eltern. Durch Vererbung können wir die Felder und Methoden der vorhandenen Klasse wiederverwenden. Daher erleichtert die Vererbung die Wiederverwendbarkeit und ist ein wichtiges Konzept von OOPs.
Was ist Vererbung in Java?
Java Erbe ist ein Mechanismus, bei dem eine Klasse die Eigenschaft einer anderen Klasse erwirbt. JavaWenn zwischen zwei Klassen eine „Ist-A“-Beziehung besteht, verwenden wir Vererbung. Die übergeordnete Klasse wird als Superklasse bezeichnet und die geerbte Klasse als Unterklasse. Das Schlüsselwort extends
wird von der Unterklasse verwendet, um die Funktionen der Superklasse zu erben. Vererbung ist wichtig, da sie zur Wiederverwendbarkeit von Code führt.
Java Vererbungssyntax:
class subClass extends superClass { //methods and fields }
Arten der Vererbung in Java
Hier sind die verschiedenen Arten der Vererbung in Java:
- Einzelvererbung
- Mehrfachvererbung
- Mehrstufige Vererbung
- Hierarchische Vererbung
- Hybride Vererbung
1. Einfache Vererbung:
Bei der Einzelvererbung erweitert eine Klasse eine andere Klasse (nur eine Klasse).
Im obigen Diagramm erweitert Klasse B nur Klasse A. Klasse A ist eine Superklasse und Klasse B ist eine Unterklasse.
2. Mehrfachvererbung:
Mehrfachvererbung ist eine der Vererbungsarten in Java Typen, bei denen eine Klasse mehr als eine Klasse erweitert. Java unterstützt keine Mehrfachvererbung.
Gemäß dem obigen Diagramm erweitert Klasse C sowohl Klasse A als auch Klasse B.
3. Mehrstufige Vererbung:
Bei der mehrstufigen Vererbung kann eine Klasse von einer abgeleiteten Klasse erben. Daher wird die abgeleitete Klasse zur Basisklasse für die neue Klasse.
Wie im Diagramm gezeigt, ist Klasse C eine Unterklasse von B und B ist eine Unterklasse von Klasse A.
4. Hierarchische Vererbung:
Bei der hierarchischen Vererbung wird eine Klasse von vielen Unterklassen geerbt.
Wie im obigen Beispiel erben die Klassen B, C und D dieselbe Klasse A.
5. Hybride Vererbung:
Die hybride Vererbung ist eine der Vererbungsarten in Java Dies ist eine Kombination aus Einfach- und Mehrfachvererbung.
Gemäß dem obigen Beispiel werden alle öffentlichen und geschützten Mitglieder der Klasse A in die Klasse D vererbt, zunächst über Klasse B und zweitens über Klasse C.
Hinweis: Java unterstützt keine hybride/Mehrfachvererbung
Vererbung in Java Beispiel
Hier ist ein Beispiel für Vererbung in Java:
class Doctor { void Doctor_Details() { System.out.println("Doctor Details..."); } } class Surgeon extends Doctor { void Surgeon_Details() { System.out.println("Surgen Detail..."); } } public class Hospital { public static void main(String args[]) { Surgeon s = new Surgeon(); s.Doctor_Details(); s.Surgeon_Details(); } }
Super-Keyword
Das Schlüsselwort super ist dem Schlüsselwort „this“ ähnlich. Das Schlüsselwort super kann verwendet werden, um auf alle Datenelemente oder Methoden der übergeordneten Klasse zuzugreifen. Das Schlüsselwort super kann verwendet werden bei Variable, Methoden- und Konstruktorebene.
Syntax:
super.<method-name>();
Überprüfen Sie auch: - dieses Keyword in Java: Was ist und wie wird es mit Beispiel verwendet
Lernen Sie die Vererbung in OOPs anhand eines Beispiels
Betrachten Sie die gleiche Bankanwendung aus dem vorheriges Beispiel.
Wir sollen zwei verschiedene Kontotypen eröffnen, eines zum Sparen und eines zum Girokonto (auch Girokonto genannt).
Lassen Sie uns vergleichen und untersuchen, wie wir die Codierung von einem aus angehen können strukturierte und objektorientierte Programmierperspektive.
Struktureller Ansatz: In der strukturierten Programmierung erstellen wir zwei Funktionen –
- Einer zum Zurückziehen
- Und das andere für Einzahlungsaktionen.
Da die Funktionsweise dieser Funktionen auf allen Konten gleich bleibt.
Der Ansatz von OOP: Während der Verwendung des Hoppla Programmieransatz. Wir würden zwei Klassen erstellen.
- Jedes verfügt über eine Implementierung der Einzahlungs- und Auszahlungsfunktionen.
- Dadurch wird zusätzliche Arbeit überflüssig.
Änderungsantrag in der Software
Nun gibt es eine Änderung in der Anforderungsspezifikation für etwas, das in der Softwarebranche so üblich ist. Sie sollten die Funktionalität eines privilegierten Bankkontos mit Überziehungskredit hinzufügen. Ein Überziehungskredit ist eine Möglichkeit, einen Betrag abzuheben, der über dem verfügbaren Saldo auf Ihrem Konto liegt.
Struktureller Ansatz: Unter Verwendung eines funktionalen Ansatzes muss ich meine Auszahlungsfunktion ändern, die bereits getestet und als Basis festgelegt wurde. Und wenn Sie eine Methode wie unten hinzufügen, werden neue Anforderungen berücksichtigt.
OOPs Ansatz: Bei Verwendung des OOP-Ansatzes müssen Sie lediglich eine neue Klasse mit einer eindeutigen Implementierung der Rückzugsfunktion schreiben. Wir haben den getesteten Codeabschnitt nie berührt.
Noch eine Änderungsanfrage
Was passiert, wenn sich die Anforderung weiter ändert? Fügen Sie gerne ein Kreditkartenkonto mit seinen eigenen, einzigartigen Einzahlungsanforderungen hinzu.
Struktureller Ansatz: Bei einem strukturellen Ansatz müssen Sie den getesteten Teil des Einzahlungscodes erneut ändern.
Der Ansatz von OOP: Aber mit dem objektorientierten Ansatz erstellen Sie einfach eine neue Klasse mit ihrer einzigartigen Implementierung der Einzahlungsmethode (rot hervorgehoben im Bild unten). Auch wenn die strukturelle Programmierung zunächst wie ein einfacher Ansatz erscheint, gewinnt OOP auf lange Sicht.
Vorteile der Vererbung in OOPs
Man könnte jedoch argumentieren, dass es in allen Klassen wiederholte Codeteile gibt.
Um dies zu umgehen, erstellen Sie eine übergeordnete Klasse, beispielsweise „Konto“, und implementieren Sie die gleiche Einzahlungs- und Auszahlungsfunktion. Und lassen Sie untergeordnete Klassen die Klasse „Konto“ erben. So haben sie Zugriff auf Auszahlungs- und Einzahlungsfunktionen in der Kontoklasse. Die Funktionen müssen nicht einzeln implementiert werden. Dies ist Vererbung in Java. .