Vererbung in Java (mit Beispiel)

โšก Intelligente Zusammenfassung

Vererbung in Java `extends` ist ein Mechanismus, mit dem eine Klasse die Felder und Methoden einer anderen Klasse รผber das Schlรผsselwort `extends` erwirbt. Er fรถrdert die Wiederverwendbarkeit von Code und modelliert eine โ€žIst-einโ€œ-Beziehung zwischen einer Oberklasse und ihren Unterklassen.

  • ๐Ÿงฌ Vererbung definiert: Eine Klasse erwirbt die Felder und Methoden einer anderen Klasse mithilfe von extends.
  • ๐Ÿ‘จ๐Ÿ‘ฉ๐Ÿ‘ง Ist-eine-Beziehung: Modelliert eine Hierarchie aus Eltern- (Super-) und Kindklassen (Sub-).
  • ๐Ÿ—‚๏ธ Fรผnf Typen: Einfache, mehrfache, mehrstufige, hierarchische und hybride Vererbung.
  • ๐Ÿšซ Java Einschrรคnkung: Java Unterstรผtzt keine Mehrfach- oder Hybridvererbung รผber Klassen.
  • ๐Ÿ”‘ Super-Keyword: Greift von einer Unterklasse aus auf Variablen, Methoden und Konstruktoren der Elternklasse zu.
  • โœ… Nutzen: Verwendet getesteten Code wieder und fรผgt Funktionen รผber neue Klassen hinzu, ohne bestehende Klassen zu verรคndern.

Vererbung in Java

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:

  1. Einzelvererbung
  2. Mehrfachvererbung
  3. Mehrstufige Vererbung
  4. Hierarchische Vererbung
  5. Hybride Vererbung

1. Einfache Vererbung:

Bei der Einzelvererbung erweitert eine Klasse eine andere Klasse (nur eine Klasse).

Einzelvererbung in Java
Einzelvererbung

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.

Mehrfachvererbung in Java

Java 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.

Mehrstufige Vererbung in Java

Mehrstufige Vererbung

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.


Hierarchische Vererbung in Java

Hierarchische Vererbung

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.


Hybride Vererbung

Hybride Vererbung

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:


Beispiel von Java Erbe

Java Vererbungsbeispiel

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).

Vererbung in OOP

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 werden wir zwei Funktionen erstellen โ€“

  1. Einer zum Zurรผckziehen
  2. Und das andere fรผr Einzahlungsaktionen.

Da die Funktionsweise dieser Funktionen auf allen Konten gleich bleibt.

Vererbung in OOPs

OOPs Ansatz: Wรคhrend mit dem 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.

Vererbung in OOPs

ร„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.

ร„nderungsantrag in der Software

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.

ร„nderungsantrag in der Software

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.

ร„nderungsantrag in der Software

Noch eine ร„nderungsanfrage

Was passiert, wenn sich die Anforderung weiter รคndert? Fรผgen Sie gerne ein Kreditkartenkonto mit seinen eigenen, einzigartigen Einzahlungsanforderungen hinzu.

Mehrfacher ร„nderungsantrag in der Softwareanforderung

Struktureller Ansatz: Bei einem strukturellen Ansatz mรผssen Sie den getesteten Teil des Einzahlungscodes erneut รคndern.

Struktureller Ansatz fรผr mehrere ร„nderungsanfragen in Software

OOPs Ansatz: Bei der objektorientierten Programmierung erstellen Sie einfach eine neue Klasse mit ihrer eigenen Implementierung der Einzahlungsmethode (rot hervorgehoben in der Abbildung unten). Auch wenn die strukturierte Programmierung zunรคchst einfacher erscheint, ist die objektorientierte Programmierung langfristig รผberlegen.

OOPs Ansatz fรผr mehrere ร„nderungsanfragen

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. .

Vorteile der Vererbung in OOPs

Vorteile der Vererbung in OOPs

Hรคufig gestellte Fragen

Java Vermeidet Mehrfachvererbung von Klassen, um das โ€žDiamantproblemโ€œ zu verhindern, bei dem der Compiler nicht entscheiden kann, welche geerbte Methode verwendet werden soll. Stattdessen Java ermรถglicht es einer Klasse, mehrere Schnittstellen zu implementieren, um eine รคhnliche Flexibilitรคt auf sichere Weise zu erreichen.

Das Schlรผsselwort `this` bezieht sich auf das aktuelle Objekt und seine Elemente, wรคhrend `super` auf die direkte Oberklasse verweist. Verwenden Sie `super`, um Variablen, Methoden oder den Konstruktor einer Oberklasse aus einer Unterklasse aufzurufen.

Vererbung modelliert eine โ€žIst-einโ€œ-Beziehung, bei der eine Unterklasse von einer Oberklasse erbt. Komposition modelliert eine โ€žHat-einโ€œ-Beziehung, bei der eine Klasse andere Objekte enthรคlt. Komposition ist oft flexibler und wird fรผr lose gekoppelte Architekturen bevorzugt.

KI kann Klassenverantwortlichkeiten analysieren, gemeinsame Basisklassen vorschlagen, Schnittstellen gegenรผber tiefer Vererbung empfehlen und doppelten Code kennzeichnen.ping Entwickler erstellen saubere, wiederverwendbare Hierarchien, die den Prinzipien des objektorientierten Designs folgen.

Ja. KI-gestรผtzte statische Analysen kรถnnen die Vererbungstiefe messen, fragile oder รผbermรครŸig verschachtelte Hierarchien kennzeichnen und Refactoring in Richtung Komposition oder Schnittstellen vorschlagen, um die Wartbarkeit zu verbessern und die enge Kopplung zu reduzieren.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: