Erkundung der Vererbung in der Java-Programmiersprache

Vererbung ist eines der Kernkonzepte der objektorientierten Programmierung. Bei der Programmierung stellt das Wort Vererbung eine Beziehung dar, in der eine untergeordnete Klasse den Status und das Verhalten einer übergeordneten Klasse annimmt.

Der Zweck der Vererbung in der Softwareentwicklung besteht darin, die Wiederverwendung sicherer und zuverlässiger Software zu erleichtern. Einer der Hauptvorteile der Verwendung der Vererbung besteht darin, dass redundanter Code in Ihren Programmen eliminiert wird.

Wie Vererbung funktioniert

Die Idee hinter der Vererbung ist, dass viele Klassen oder Objekte dieselben Attribute und Methoden haben. Im Sinne der Erstellung zuverlässiger Software können neue Klassen jetzt aus bereits vorhandenen verwandten Klassen abgeleitet und bei Bedarf auf vorhandene Zustände und Verhaltensweisen erweitert werden.

Ein reales Beispiel dafür, wie Vererbung funktioniert, wäre die Betrachtung von Früchten. Dies ist ein breites Etikett, das dazu dient, eine Reihe verschiedener Elemente zu kapseln.

Ein Apfel ist eine Frucht und eine Orange auch. Eine Orange ist jedoch kein Apfel, sodass Sie keine Früchte als Lagerware hätten, wenn Sie ein Geschäft besäßen. Vielleicht könnten Sie einen Obstbereich in Ihrem Inventar haben, und unter diesem Abschnitt würden Sie spezifischere Gegenstände wie Äpfel und Orangen haben.

So funktioniert Vererbung.

Erkundung der Vererbung in der Java-Programmiersprache - fruit section 1

Vererbung in Java verwenden

Vererbung kann in jeder Programmiersprache verwendet werden, die das objektorientierte Programmierparadigma verwendet . Die genaue Art und Weise, wie die Vererbung verwendet wird, hängt jedoch von der jeweiligen Programmiersprache ab.

Beispielsweise ist C ++ auch eine objektorientierte Programmiersprache . C ++ unterstützt die sogenannte Mehrfachvererbung, während Java nur die Einzelvererbung unterstützt.

Dies bedeutet, dass in Java eine übergeordnete Klasse viele untergeordnete Klassen haben kann, aber jede untergeordnete Klasse nur eine einzige übergeordnete Klasse haben kann (einzelne Vererbung). Es gibt jedoch eine Möglichkeit, eine indirekte Mehrfachvererbung in Java zu erreichen, indem eine Beziehung zwischen Großeltern, Eltern und Kindern erstellt wird.

Erstellen der übergeordneten Klasse in Java

Das Auswählen einer übergeordneten Klasse aus einem Dokument mit Softwareanforderungen wird als objektorientierte Analyse bezeichnet. Während dieses Prozesses wird häufig der Ausdruck „ist ein“ verwendet, um mögliche Vererbungsbeziehungen zu identifizieren. Wenn Sie sich an unserem obigen Beispiel orientieren, sollten Sie sehen können, dass Obst unsere Elternklasse ist.

Beispiel für eine Obstelternklasse

 
public class Fruit {
//Variable Declaration
protected String seed;
protected String skinColor;
protected String taste;
//Default Constructor
public Fruit(){
seed = "";
skinColor ="";
taste ="";
}
//Primary Constructor
public Fruit(String seed, String skinColor, String taste){
this.seed = seed;
this.skinColor = skinColor;
this.taste = taste;
}
//getters and setters
public String getSeed() {
return seed;
}
public void setSeed(String seed) {
this.seed = seed;
}
public String getSkinColor() {
return skinColor;
}
public void setSkinColor(String skinColor) {
this.skinColor = skinColor;
}
public String getTaste() {
return taste;
}
public void setTaste(String taste) {
this.taste = taste;
}
//eat method
public void eat(){
//general code on how to eat a fruit
}
//juice method
public void juice() {
//general code on how to juice a fruit
}
}

Einer der bemerkenswertesten Aspekte der oben genannten übergeordneten Klasse ist der Zugriffsmodifikator, der bei jeder Variablendeklaration verwendet wird. Der Modifikator "geschützter" Zugriff ist ideal für die Verwendung in übergeordneten Klassen, da er verhindert, dass nicht untergeordnete Klassen Zugriff auf die Datenattribute der übergeordneten Klasse erhalten.

Weiter unten im Code werden Sie mit Konstruktoren, Gettern und Setzern vertraut gemacht, die allgemeine Bausteine ​​für jede Java-Klasse sind. Schließlich werden Sie mit zwei Methoden (Saft und Essen) vertraut gemacht, die in der Elternklasse unseres Programms erstellt wurden, da sie für alle Früchte universell sind – alle Früchte können gegessen und entsaftet werden.

Erstellen von untergeordneten Klassen in Java

Untergeordnete Klassen werden normalerweise als spezialisierte oder abgeleitete Klassen bezeichnet, da sie den Status und das Verhalten eines übergeordneten Elements erben und diese Attribute häufig so anpassen, dass sie spezifischer sind.

Wenn Sie mit unserem Beispiel fortfahren, sollten Sie sehen können, warum Orange eine geeignete Kinderklasse der oben genannten Obstklasse ist.

Beispiel für eine orangefarbene Kinderklasse

 
public class Orange extends Fruit{
//variable declaration
private int supremes;
//default constructor
public Orange() {
supremes = 0;
}
//primary constructor
public Orange(String seed, String skinColor, String taste, int supremes){
super(seed, skinColor, taste);
this.supremes = supremes;
}
//getters and setters
public int getsupremes() {
return supremes;
}
public void setsupremes(int supremes) {
this.supremes = supremes;
}
//eat method
public void eat(){
//how to eat an orange
}
//juice method
public void juice() {
//how to juice and orange
}
//peel method
public void peel(){
//how to peel an orange
}
}

Es gibt einen Unterschied zwischen dem Aussehen einer regulären Java-Klassendeklaration und dem, was wir in unserem obigen Code haben. Das Schlüsselwort "erweitert" wird in Java verwendet, um die Vererbung zu ermöglichen.

In unserem obigen Beispiel erweitert die untergeordnete Klasse (orange) die übergeordnete Klasse (Frucht). Daher kann der Status und das Verhalten der Fruchtklasse jetzt von der Orangenklasse abgerufen und geändert werden.

Das eindeutige Attribut unserer orangefarbenen Klasse wird mit dem Variablennamen supremes identifiziert (dies ist der offizielle Name für die kleinen Segmente in Orangen). Hier kommt die Spezialisierung ins Spiel; Nicht alle Früchte haben Supremes, aber alle Orangen. Daher ist es logisch, die Supremes-Variable für die Orangenklasse zu reservieren.

Das Hinzufügen der „Peel“ -Methode zu den bereits vorhandenen „Eat“ – und „Juice“ -Methoden ist ebenfalls logisch, da zwar nicht alle Früchte geschält werden können, Orangen jedoch häufig geschält werden.

Sie sollten bedenken, dass wir sie nicht in unsere Orangenklasse aufnehmen müssten, wenn wir nicht beabsichtigen würden, die bestehenden Methoden „Essen“ und „Saft“ zu ändern. Die Methoden in der Orangenklasse überschreiben alle ähnlichen Methoden in der Fruchtklasse. Wenn also alle Früchte auf die gleiche Weise gegessen und entsaftet würden, müssten wir diese Methoden nicht in der Orangenklasse erstellen.

Die Rollenkonstruktoren spielen bei der Vererbung eine Rolle

Standardmäßig werden übergeordnete Klassenkonstruktoren von untergeordneten Klassen geerbt. Wenn ein untergeordnetes Klassenobjekt erstellt wird, bedeutet dies, dass auch ein übergeordnetes Klassenobjekt automatisch erstellt wird.

Zurück zu unserem Beispiel: Jedes Mal, wenn ein neues orangefarbenes Objekt erstellt wird, wird auch ein Fruchtobjekt erstellt, da eine Orange eine Frucht ist.

Wenn hinter den Kulissen ein untergeordnetes Klassenobjekt erstellt wird, wird zuerst der Konstruktor der übergeordneten Klasse aufgerufen, gefolgt vom Konstruktor der untergeordneten Klasse. Wenn in unserer obigen orangefarbenen untergeordneten Klasse ein orangefarbenes Objekt ohne Parameter erstellt wird, wird unser Standardkonstruktor für Fruchtklassen aufgerufen, gefolgt von unserem standardmäßigen Auftragnehmer für orangefarbene Klassen.

Die "Super" -Methode in unserem obigen Primärkonstruktor ist erforderlich, da sie angibt, dass der Primärkonstruktor – und nicht der Standardkonstruktor – der übergeordneten Fruchtklasse aufgerufen werden soll, wenn ein orangefarbenes Objekt mit Parametern erstellt wird.

Jetzt können Sie die Vererbung in Java verwenden

In diesem Artikel konnten Sie lernen, was Vererbung ist, wie sie funktioniert und warum sie ein so wichtiges Konzept in der Programmierung ist. Sie können jetzt Ihre Vererbungsbeziehungen mit der Programmiersprache Java erstellen. Darüber hinaus wissen Sie jetzt, wie Sie die Einzelvererbungsregel von Java umgehen können, indem Sie eine Großelternbeziehung erstellen.

Bildnachweis : Andreas Wohlfahrt / Pexels