what is inheritance java tutorial with examples
In diesem Tutorial wird das Konzept der Vererbung in Java erläutert. Verwandte Begriffe wie 'Erweitert' - und 'Super' -Schlüsselwörter, Unterklassen-, Superklassen-, Is-A-, HAS-A-Beziehungen usw.:
Nachdem wir die drei Säulen der OOP kennengelernt haben, nämlich Abstraktion, Verkapselung und Polymorphismus in Java, kommen wir zur letzten Säule der OOP, d. H. Der Vererbung.
Beginnend mit diesem Tutorial werden wir in den nächsten Tutorials die Vererbung in Java diskutieren.
=> Lesen Sie die Easy Java Training Series durch.
Was du lernen wirst:
Vererbung in Java
Vererbung in Java kann als eine Technik oder ein Prozess definiert werden, bei dem ein Objekt einer Klasse das Verhalten und die Eigenschaften eines anderen Objekts erhält. Dies erfolgt durch Erben der Klasse oder Herstellen einer Beziehung zwischen zwei Klassen.
Zum Beispiel, Ein Frosch ist eine Amphibie. Wie andere Tiere der Amphibienklasse kann Frosch viele Eigenschaften aufweisen, die anderen Tieren gemeinsam sind. Hier ist also eine Amphibie eine Art und Tiere wie Frösche sind ihre Mitglieder.
Wenn wir die Amphibienart und ihre Mitglieder in einer Softwaredarstellung mit OOP darstellen müssen, werden wir eine Klasse „Amphibien“ entwickeln, die Eigenschaften oder Verhaltensweisen enthält, die Amphibien im Allgemeinen gemeinsam sind.
Auf diese Weise müssen wir nicht die gemeinsamen Eigenschaften und Verhaltensweisen für jedes von uns beschriebene Amphibientier duplizieren. Wir werden direkt eine Klasse für Amphibientiere erstellen und von der Amphibienklasse erben, wie unten gezeigt.
Eine allgemeine Idee hinter der Funktion 'Vererbung' ist also, dass wir neue Klassen erstellen können, indem wir von den bereits vorhandenen Klassen erben. Durch das Erben von den bereits vorhandenen Klassen können wir die Eigenschaften und das Verhalten dieser Klassen verwenden. Außerdem können wir unserer neuen Klasse weitere Eigenschaften und / oder Verhaltensweisen hinzufügen.
Die Vererbungsfunktion zeigt ein „ Eltern-Kind Verbindung oder Beziehung in Java. Die Klasse, von der die neue Klasse geerbt wird, heißt „ Übergeordnete Klasse 'Während die neue Klasse' Kinderklasse ”.
Vererbung wird hauptsächlich verwendet:
- Zum Methode überschreiben damit wir erreichen können Laufzeitpolymorphismus .
- Zu Verwenden Sie den Code erneut . Durch das Erben von den bereits vorhandenen Klassen stellen wir die Wiederverwendbarkeit von Code.
Allgemeine Terminologie für die Vererbung
- Wiederverwendbarkeit: Mechanismus, mit dem neue Klassen Felder oder Eigenschaften und Methoden einer vorhandenen Klasse wiederverwenden.
- Klasse: Eine Klasse ist eine Sammlung von Objekten mit gemeinsamen Eigenschaften. Eine Klasse kann als Vorlage oder Blaupause für die Objekte angezeigt werden.
- Unterklasse / Kinderklasse: Eine Klasse, die von einer anderen Klasse erbt, ist eine Unterklasse oder eine untergeordnete Klasse oder eine abgeleitete Klasse.
- Superklasse / Elternklasse: Eine Klasse, die von einer anderen Klasse geerbt wird, um Eigenschaften und Methoden zu erhalten, wird als übergeordnete Klasse oder Oberklasse oder Basisklasse bezeichnet.
Die folgende Vererbungshierarchie ist ein Beispiel für eine Oberklasse und eine Unterklasse.
Wir haben eine Employee-Klasse mit den Feldern OrganisationName und EmployeeId. Es kann auch andere Felder wie Mitarbeitername, Abteilung und andere Mitarbeiterdetails enthalten.
Dann leiten wir eine weitere Klasse namens 'SoftwareDeveloper' mit dem Gehalt und den Vergünstigungen des Feldes ab. Die Klasse SoftwareDeveloper erbt von der Employee-Klasse und erhält daher auch die Eigenschaften der Employee-Klasse.
Wie im obigen Diagramm gezeigt, ist die Employee-Klasse hier eine Super- oder Basisklasse und SoftwareDeveloper eine Unterklasse oder abgeleitete Klasse.
Schlüsselwort 'Erweitert' In Java
In Java wird das Schlüsselwort 'erweitert' verwendet, um die Klasse zu erben.
Die allgemeine Syntax der Java-Vererbung ist unten angegeben:
class SubClass extends SuperClass { //subclass methods and fields }
Wie oben gezeigt, wird das Schlüsselwort 'extended' nach dem Klassennamen in der Syntax der Klassendeklaration angezeigt.
Das Schlüsselwort 'Erweitert' zeigt an, dass wir eine neue Klasse 'Unterklasse' erstellen, die die Eigenschaften und das Verhalten von 'SuperClass' erbt. Mit anderen Worten, das Schlüsselwort extensiv zeigt an, dass wir eine neue Klasse SubClass auf der vorhandenen Funktionalität der SuperClass aufbauen.
Die mit dem Schlüsselwort 'extensives' implementierte Vererbung ist die Klassenvererbung. Im nächsten Tutorial werden wir ein anderes Schlüsselwort 'implementiert' diskutieren, mit dem wir Schnittstellen erben können.
Ein Beispiel für die oben erläuterte Employee-SoftwareDeveloper-Klasse kann wie folgt dargestellt werden:
class Employee{ String OrganizationName; int EmployeeId; } class SoftwareDeveloper extends Employee{ float Salary; float Perks; }
IS-A und HAS-A Beziehung
Betrachten Sie die folgende Klassenstruktur:
class Mammal{ } class Cow extends Mammal{ }
Wie können wir also die obige Struktur interpretieren? Wenn die Kuhklasse Säugetiere erweitert oder erbt, können wir sagen: „Kuh IST EIN Säugetier “oder„ Kuh Ist eine Art von Säugetier'. Wenn wir also solche Beziehungen ausdrücken, ist diese bestimmte Beziehung die Beziehung „IS_A“.
In der obigen Struktur haben wir die Vererbungshierarchie verwendet, um die Tatsache auszudrücken, dass eine Art von einer anderen Art ist. In der obigen Struktur haben wir eine Vererbung verwendet, um die Beziehung zwischen Kuh und Säugetier anzuzeigen.
In ähnlicher Weise können wir einige weitere IS-A-Beziehungen wie folgt ausdrücken:
Oben sind einige der häufigsten Beispiele für Beziehungen aufgeführt, die wir mithilfe der Vererbung in Java ausdrücken können.
Im Allgemeinen kann die Art von IS-A-Beziehungen durch Vererbung ausgedrückt werden.
Sehen wir uns nun das folgende Beispiel an:
In dem obigen Diagramm sehen wir, dass ein Fahrzeug zwei Teile hat, d. H. Motor und Bremse. Wie können wir dieses Szenario in Worte fassen?
Wir können sagen, dass „ein Fahrzeug enthält ein Motor und ein Fahrzeug enthält eine Bremse “.
Was wir hier ausdrücken, ist also nicht die 'IS-A' -Beziehung, sondern eine Containment-Beziehung, in der wir ein Objekt als Teil eines anderen Objekts angeben.
osi-Modellgeräte verwenden jede Schicht
Im obigen Beispiel ist ein Motor ein Teil von dem Fahrzeug. Es ist nicht ein ' So'ne Art Fahrzeug. Dies ist das ' HAT EIN ”Oder Containment- oder Kompositionsbeziehung in Java. Die Has-a-Beziehung in Java wird durch Einfügen eines Objekts als Mitglied der Klasse ausgedrückt.
Wenn wir also dem gleichen Fahrzeugbeispiel oben folgen, können wir es wie folgt ausdrücken:
class Engine{ } class Brake { } class Vehicle{ Engine e; Brake b; }
Ein Fahrzeug hat also einen Motor und eine Bremse. Indem wir die Beziehung auf die oben beschriebene Weise ausdrücken, sind wir nicht an der internen Implementierung von Motor oder Bremse interessiert. Die Fahrzeugklasse teilt den Motor- und Bremsklassen mit, was benötigt wird, und diese Klassen stellen dies bereit.
Wie die IS-A-Beziehung ist auch die HAS-A-Beziehung bei der Wiederverwendung des Codes nützlich.
In diesem Tutorial werden wir die Vererbung (IS-A) im Detail diskutieren und im nächsten Tutorial werden wir die Eindämmung oder Zusammensetzung (HAS-A) diskutieren.
Java-Vererbungsbeispiel
Implementieren wir ein einfaches Beispiel in Java, um die Vererbung zu demonstrieren.
//example class demonstrating Inheritance in Java class BaseClass { public void display() { System.out.println('BaseClass::Display'); } } //create a new class from BaseClass class DerivedClass extends BaseClass { public void print() { System.out.println('DerivedClass::print'); } } class Main { public static void main(String() args) { //create an object of DerivedClass DerivedClass d1 = new DerivedClass(); d1.display(); //call BaseClass method d1.print(); //call DerivedClass method } }
Ausgabe:
Das obige Programm zeigt ein einfaches Beispiel für die Vererbung. Eine BaseClass mit einer Methode wird deklariert. Dann wird eine andere Klasse DerivedClass deklariert, die BaseClass erweitert. Diese Klasse hat auch eine Methode.
In der Hauptmethode des Programms erstellen wir ein DerivedClass-Objekt und rufen mit diesem Objekt sowohl die BaseClass als auch die DerivedClass-Methode auf.
Die Ausgabe zeigt die Nachrichten, die mit beiden Methoden gedruckt wurden. Wenn DerivedClass die BaseClass erweitert und die BaseClass-Methode öffentlich ist, ist sie für die DerivedClass sichtbar.
'Super' -Schlüsselwort In Java
In Inheritance beschäftigen wir uns mit Oberklassen oder Elternklassen und Kinderklassen. Wenn wir zwischenzeitlich auf Mitglieder der Oberklasse zugreifen müssen, einschließlich Variablen, Methoden oder Konstruktoren, müssen wir über einen Mechanismus verfügen. Dieser Mechanismus für den Zugriff auf die Mitglieder der Basisklasse wird in Java mithilfe eines Schlüsselworts 'super' bereitgestellt.
In welchen Szenarien verwenden wir das Schlüsselwort 'super' in Java?
Nachfolgend sind Szenarien aufgeführt, in denen ein 'Super' -Schlüsselwort hilfreich sein kann.
- Wenn die Super- / Basisklasse und die Unter- / Ableitungsklasse für Mitglieder dieselben Namen haben und wir auf Superklassenmitglieder zugreifen möchten, verwenden wir das Schlüsselwort super.
- Wenn wir von der Unterklasse aus auf den Konstruktor der Oberklasse zugreifen möchten, verwenden wir das Schlüsselwort super, um das Schlüsselwort superclass aufzurufen.
In der obigen Abbildung haben wir eine Vererbungsstruktur gezeigt. In der Basis- und der abgeleiteten Klasse haben wir eine String-Variable myStr. In der abgeleiteten Klasse haben wir eine printStr () -Funktion. Bei dieser Methode haben wir das Schlüsselwort 'super' verwendet, um von der Basisklasse aus auf die Variable myStr zuzugreifen.
In der Abbildung haben wir die Pfeile gezeigt, die auf die Basisklassenmitgliedsvariable und die abgeleitete Klassenvariable zeigen.
Sehen wir uns nun die Programmierbeispiele für die Verwendung des Schlüsselworts super an, um auf verschiedene Mitglieder der Oberklasse zuzugreifen.
# 1) Zugriff auf Superclass-Mitgliedsvariable
Das folgende Java-Programm demonstriert die Verwendung eines 'Super' -Schlüsselworts für den Zugriff auf Variablen aus der Basisklasse.
class Baseclass { String myStr; } class Subclass extends Baseclass { String myStr; public void printdetails() //Baseclass and Subclass have variables with same name { super.myStr = 'Super'; //refers to parent class member myStr = 'Sub'; System.out.println('Superclass myStr :' + super.myStr+' and Subclass myStr:'+myStr); } } class Main{ public static void main(String() args) { Subclass cobj = new Subclass(); cobj. printdetails (); } }
Ausgabe:
Das obige Programm zeigt, wie von der abgeleiteten Klasse aus auf die Elementvariablen der Basisklasse zugegriffen wird, wenn die Elementvariablen sowohl in der Basisklasse als auch in der abgeleiteten Klasse mit demselben Namen deklariert werden.
Hier haben wir die Variable myStr, die sowohl in der Basisklasse als auch in der abgeleiteten Klasse deklariert ist. In der Methode printdetails verweisen wir mit „super.myStr“ auf die Variable myStr der Basisklasse, während auf die abgeleitete Klassenvariable myStr direkt ohne Qualifikationsmerkmal zugegriffen wird.
# 2) Zugriff auf die Superclass-Methode
Als nächstes sehen wir, wie die Basisklassenmethode aufgerufen wird, wenn die Methode in der Basisklasse und die Methode in der abgeleiteten Klasse denselben Namen haben.
Das folgende Programm demonstriert dies.
class Parent { String myStr; public void print() //parent class method { myStr = 'Parent class myStr'; System.out.println(myStr); } } class Child extends Parent { String myStr; public void print() //child class method with same name as parent { super.print(); //call Parent class print() method myStr = 'Child class myStr'; System.out.println(myStr); } } class Main{ public static void main(String() args) { Child c_obj = new Child(); c_obj.print (); } }
Ausgabe:
# 3) Zugriff auf Superclass Constructor
Wenn wir eine Klasse von einer anderen erben, beachten Sie, dass die Konstruktoren nicht geerbt werden.
Wenn wir vor dem Ausführen des abgeleiteten Klassenkonstruktors Anweisungen von den Superklassenkonstruktoren ausführen möchten, können wir den Superklassenkonstruktor auch mit dem Schlüsselwort 'super' aufrufen.
Zum Aufrufen des Superklassenkonstruktors verwenden wir den Methodenaufruf.
super (Parameterliste…)
Die folgende Methode demonstriert den Zugriff auf Superkonstruktoren in Java.
class Parent { String myStr; public Parent(String name) //base class constructor { myStr = name; } } class Child extends Parent { String myStr; public Child(String name1, String name2) { super(name1); //call base class constructor and pass argument value this.myStr = name2; } public void printDetails() //print details of both constructors { System.out.println('From base class constructor: ' +super.myStr); System.out.println('From derived class constructor: ' + myStr); } } class Main{ public static void main(String() args) { Child cobj = new Child('Super constructor string','Child constructor string'); cobj.printDetails(); } }
Ausgabe:
So führen Sie eine ausführbare JAR-Datei aus
Wie wir aus dem obigen Programm sehen können, haben wir den Konstruktor der Oberklasse vom abgeleiteten Klassenkonstruktor aufgerufen. Beachten Sie, dass es immer dann, wenn wir auf den Konstruktor der Oberklasse zugreifen möchten, die erste Anweisung im Konstruktor der abgeleiteten Klasse sein sollte.
Da die Basisklasse einen parametrisierten Konstruktor hat, übergeben wir beim Aufrufen des Konstruktors auch den entsprechenden Parameter an den Superaufruf.
Wenn der Superkonstruktor nicht wie oben explizit aufgerufen wird, fügt der Compiler super () immer automatisch einen impliziten Aufruf hinzu. Beachten Sie jedoch, dass dies ein Aufruf des Standardkonstruktors der Oberklasse ist.
Häufig gestellte Fragen
F # 1) Was ist Vererbung in Java?
Antworten: Ein Prozess, durch den eine Klasse die Eigenschaften und das Verhalten einer anderen Klasse erhält, wird als Vererbung bezeichnet. In Java wird eine Klasse von einer anderen Klasse mit dem Schlüsselwort 'extended' geerbt.
Die Vererbung fördert die Wiederverwendbarkeit von Code, da wir durch die Vererbung die bereits vorhandenen Eigenschaften und das Verhalten einer geerbten Klasse erwerben und verwenden können, ohne doppelten Code schreiben zu müssen.
F # 2) Warum wird Vererbung in Java verwendet?
Antworten: Die Vererbung wird hauptsächlich verwendet, um die Wiederverwendbarkeit der Anwendung zu verbessern. Mit der Vererbung können wir fertige Klassen in unserer Anwendung verwenden. Wir müssen unseren Code nicht schreiben, wenn wir die Funktionalität bereit haben.
Die zweite Verwendung der Vererbung ist das Überschreiben von Methoden. Um den Laufzeitpolymorphismus zu implementieren, verwenden wir die Vererbung.
F # 3) Was sind die Vorteile der Vererbung?
Antworten: Die Wiederverwendbarkeit ist der Hauptvorteil der Vererbung. Das Teilen von Code durch Vererbung führt auch zu einer besseren Lesbarkeit und einer besseren Organisation des Codes.
Wir können Laufzeitpolymorphismus auch durch Überschreiben von Methoden unter Verwendung von Vererbung erreichen.
F # 4) Was sind die Merkmale der Vererbung?
Antworten: Jedes Merkmal oder Merkmal, das von der älteren Generation erworben wurde, erfolgt durch Vererbung. Zum Beispiel, Das Licht-Auge-Merkmal, das in vielen Familien auftritt, ist ein Beispiel für Vererbung.
Aus programmtechnischer Sicht bietet die Vererbung die Funktion der Wiederverwendbarkeit und des Überschreibens von Methoden.
F # 5) Ist super () notwendig?
Antworten: Nein. Wenn wir super () nicht aufrufen, erledigt der Compiler dies implizit für uns. Der implizite Aufruf von super () ist jedoch der Standardkonstruktor der Basisklasse. Wenn wir also einen parametrisierten Konstruktor aus einer Basisklasse benötigen, sollten wir ihn explizit aufrufen.
Fazit
In diesem Tutorial haben wir das Konzept der Vererbung in Java vorgestellt. Vererbung ist der Prozess des Erwerbs der Eigenschaften und des Verhaltens einer Klasse in einer anderen Klasse. Wir haben hier die grundlegende Definition und Terminologie besprochen, die wir bei der Vererbung verwenden.
Wir haben auch die Is-A- und Has-A-Beziehungen in Java besprochen. Vererbung wird verwendet, um eine Is-A-Beziehung zu implementieren.
Anschließend haben wir die Schlüsselwörter 'Erweitert' und 'Super' in Java besprochen, die im Zusammenhang mit der Vererbung verwendet werden. Extends wird verwendet, um die Vererbung zu implementieren. Das Schlüsselwort super bezieht sich auf den Konstruktor, die Methode oder die Variable der Basisklasse aus der abgeleiteten Klasse.
=> Lesen Sie hier den perfekten Java-Schulungsleitfaden.
Literatur-Empfehlungen
- Java Scanner Class Tutorial mit Beispielen
- Was ist Java Vector? Java Vector Class Tutorial mit Beispielen
- Java Enum: Java Enumeration Tutorial mit Beispielen
- Java String length () -Methode mit Beispielen
- Java Float Tutorial mit Programmierbeispielen
- Vererbung in C ++
- Arten der Vererbung in C ++
- Python-OOPs-Konzepte (Python-Klassen, Objekte und Vererbung)