Nachlass ist das leistungsstärkste Merkmal der objektorientierten Programmierung. Es ermöglicht uns, die Eigenschaften einer Klasse auf eine andere Klasse zu vererben. In diesem Abschnitt werden wir diskutieren Arten der Vererbung in Java Ausführlich anhand von Beispielen aus der Praxis. Außerdem werden wir Java-Programme erstellen, um das Konzept verschiedener Vererbungsarten umzusetzen.
Nachlass
Nachlass ist ein Mechanismus zum Antreiben einer neuen Klasse aus einer vorhandenen Klasse. Die vorhandene (alte) Klasse heißt Basisklasse oder Superklasse oder Elternklasse . Die neue Klasse heißt a abgeleitete Klasse oder Unterklasse oder Kinderklasse . Es ermöglicht uns, die Eigenschaften und das Verhalten einer Klasse (übergeordnete Klasse) in einer anderen Klasse (untergeordnete Klasse) zu verwenden.
Eine Klasse, deren Eigenschaften vererbt werden, wird als bezeichnet Elternklasse und eine Klasse, die die Eigenschaften der übergeordneten Klasse erbt, wird als bezeichnet Kinderklasse . Auf diese Weise wird eine Beziehung zwischen der übergeordneten und der untergeordneten Klasse hergestellt, die als Eltern-Kind-Klasse oder Eltern-Kind-Klasse bezeichnet wird Ist ein Beziehung.
Angenommen, es gibt zwei benannte Klassen Vater Und Kind und wir wollen die Eigenschaften der Vaterklasse in der Kindklasse erben. Wir können dies erreichen, indem wir die verwenden erweitert Stichwort.
//inherits the properties of the Father class class Child extends Father { //functionality }
Wann sollten wir Vererbung nutzen?
Vererbung bietet die Wiederverwendbarkeit von Code, insbesondere wenn eine große Menge an Code wiederverwendet werden muss. Es stellt auch die Beziehung zwischen verschiedenen Klassen her, die als a bezeichnet wird Ist ein Beziehung. Wir können es auch nutzen, wenn wir etwas erreichen wollen Methode überschreiben .
Punkte, die man sich merken sollte
- Der Konstruktor kann in Java nicht vererbt werden.
- Private Mitglieder werden in Java nicht vererbt.
- Zyklische Vererbung ist in Java nicht zulässig.
- Weisen Sie untergeordneten Objekten eine übergeordnete Referenz zu.
- Konstruktoren werden ausgeführt, weil super() im Konstruktor vorhanden ist.
Arten der Vererbung
Java unterstützt die folgenden vier Arten der Vererbung:
- Einzelvererbung
- Mehrstufige Vererbung
- Hierarchische Vererbung
- Hybride Vererbung
Hinweis: Mehrfachvererbung wird in Java nicht unterstützt.
Lassen Sie uns jedes anhand eines geeigneten Beispiels besprechen.
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 bezeichnet einfache Vererbung .
In der obigen Abbildung ist Employee eine übergeordnete Klasse und Executive eine untergeordnete Klasse. Die Executive-Klasse erbt alle Eigenschaften der Employee-Klasse.
Lassen Sie uns den Einzelvererbungsmechanismus in einem Java-Programm implementieren.
Executive.java
class Employee { float salary=34534*12; } public class Executive extends Employee { float bonus=3000*6; public static void main(String args[]) { Executive obj=new Executive(); System.out.println('Total salary credited: '+obj.salary); System.out.println('Bonus of six months: '+obj.bonus); } }
Ausgabe:
Konvertieren Sie einen String in char Java
Total salary credited: 414408.0 Bonus of six months: 18000.0
Mehrstufige Vererbung
In mehrstufige Vererbung Wenn eine Klasse von einer Klasse abgeleitet wird, die ebenfalls von einer anderen Klasse abgeleitet ist, wird dies als mehrstufige Vererbung bezeichnet. Mit einfachen Worten können wir sagen, dass eine Klasse mit mehr als einer übergeordneten Klasse als mehrstufige Vererbung bezeichnet wird. Beachten Sie, dass die Kurse auf unterschiedlichen Niveaus stattfinden müssen. Daher gibt es eine einzige Basisklasse und eine einzige abgeleitete Klasse, aber mehrere Zwischenbasisklassen.
In der obigen Abbildung erbt die Klasse Marks die Mitglieder oder Methoden der Klasse Students. Die Klasse Sports erbt die Mitglieder der Klasse Marks. Daher ist die Klasse „Student“ die übergeordnete Klasse der Klasse „Marks“ und die Klasse „Marks“ die übergeordnete Klasse der Klasse „Sports“. Daher erbt die Klasse „Sport“ implizit die Eigenschaften von „Student“ zusammen mit den Klassen „Marks“.
Lassen Sie uns den mehrstufigen Vererbungsmechanismus in einem Java-Programm implementieren.
MultilevelInheritanceExample.java
//super class class Student { int reg_no; void getNo(int no) { reg_no=no; } void putNo() { System.out.println('registration number= '+reg_no); } } //intermediate sub class class Marks extends Student { float marks; void getMarks(float m) { marks=m; } void putMarks() { System.out.println('marks= '+marks); } } //derived class class Sports extends Marks { float score; void getScore(float scr) { score=scr; } void putScore() { System.out.println('score= '+score); } } public class MultilevelInheritanceExample { public static void main(String args[]) { Sports ob=new Sports(); ob.getNo(0987); ob.putNo(); ob.getMarks(78); ob.putMarks(); ob.getScore(68.7); ob.putScore(); } }
Ausgabe:
registration number= 0987 marks= 78.0 score= 68.7
Hierarchische Vererbung
Wenn mehrere Klassen von einer einzigen Basisklasse abgeleitet sind, wird diese aufgerufen hierarchische Vererbung .
In der obigen Abbildung erben die Klassen „Wissenschaft“, „Wirtschaft“ und „Kunst“ eine einzige übergeordnete Klasse namens „Student“.
Lassen Sie uns den hierarchischen Vererbungsmechanismus in einem Java-Programm implementieren.
HierarchicalInheritanceExample.java
//parent class class Student { public void methodStudent() { System.out.println('The method of the class Student invoked.'); } } class Science extends Student { public void methodScience() { System.out.println('The method of the class Science invoked.'); } } class Commerce extends Student { public void methodCommerce() { System.out.println('The method of the class Commerce invoked.'); } } class Arts extends Student { public void methodArts() { System.out.println('The method of the class Arts invoked.'); } } public class HierarchicalInheritanceExample { public static void main(String args[]) { Science sci = new Science(); Commerce comm = new Commerce(); Arts art = new Arts(); //all the sub classes can access the method of super class sci.methodStudent(); comm.methodStudent(); art.methodStudent(); } }
Ausgabe:
The method of the class Student invoked. The method of the class Student invoked. The method of the class Student invoked.
Hybride Vererbung
Hybride Mittel bestehen aus mehr als einem. Unter hybrider Vererbung versteht man die Kombination zweier oder mehrerer Vererbungsarten.
In der obigen Abbildung ist GrandFather eine Superklasse. Die Father-Klasse erbt die Eigenschaften der GrandFather-Klasse. Da Vater und Großvater eine Einzelvererbung darstellen. Darüber hinaus wird die Vaterklasse von der Sohn- und Tochterklasse geerbt. Somit wird der Vater zur Elternklasse für Sohn und Tochter. Diese Klassen repräsentieren die hierarchische Vererbung. Zusammengenommen bezeichnet es die hybride Vererbung.
Lassen Sie uns den Hybrid-Vererbungsmechanismus in einem Java-Programm implementieren.
Tochter.java
//parent class class GrandFather { public void show() { System.out.println('I am grandfather.'); } } //inherits GrandFather properties class Father extends GrandFather { public void show() { System.out.println('I am father.'); } } //inherits Father properties class Son extends Father { public void show() { System.out.println('I am son.'); } } //inherits Father properties public class Daughter extends Father { public void show() { System.out.println('I am a daughter.'); } public static void main(String args[]) { Daughter obj = new Daughter(); obj.show(); } }
Ausgabe:
Konvertieren Sie eine Ganzzahl in einen String Java
I am daughter.
Mehrfachvererbung (nicht unterstützt)
Aufgrund der Mehrdeutigkeit unterstützt Java keine Mehrfachvererbung. Betrachten Sie beispielsweise das folgende Java-Programm.
Demo.java
class Wishes { void message() { System.out.println('Best of Luck!!'); } } class Birthday { void message() { System.out.println('Happy Birthday!!'); } } public class Demo extends Wishes, Birthday //considering a scenario { public static void main(String args[]) { Demo obj=new Demo(); //can't decide which classes' message() method will be invoked obj.message(); } }
Der obige Code gibt einen Fehler aus, da der Compiler nicht entscheiden kann, welche message()-Methode aufgerufen werden soll. Aus diesem Grund unterstützt Java keine Mehrfachvererbung auf Klassenebene, sondern kann durch eine erreicht werden Schnittstelle .