Ausführung von Java-Konstruktoren in der Vererbung
- Ausführung von Java-Konstruktoren in der Vererbung
- Ausführung des Standard-Java-Konstruktors in der Vererbung
- Ausführung des Java-Konstruktors in der Vererbung, wenn die übergeordnete Klasse einen standardmäßigen und parametrisierten Konstruktor hat
-
Verwenden Sie
super
, um den parametrisierten Konstruktor der übergeordneten Klasse und aller untergeordneten Klassen aufzurufen
Heute lernen wir die Ausführung von Java-Konstruktoren bei der Vererbung kennen. Wir werden Codebeispiele der Standard- und parametrisierten Konstruktoren in den abgeleiteten Klassen sehen (auch als untergeordnete Klassen und Unterklassen bezeichnet).
Ausführung von Java-Konstruktoren in der Vererbung
Genug Wissen über Vererbung ist notwendig, um mit diesem Artikel fortzufahren. Wenn Sie dieses Tutorial lesen, gehen wir davon aus, dass Sie über solide Kenntnisse der Java-Vererbung verfügen.
Lassen Sie uns etwas über den Ausführungsprozess von Java-Konstruktoren lernen, während wir die übergeordnete Klasse (auch bekannt als Basisklasse oder Superklasse) mit dem Schlüsselwort extends
erweitern.
Ausführung des Standard-Java-Konstruktors in der Vererbung
Beispielcode:
class parentClass {
parentClass() {
System.out.println("Default constructor of the parent class.");
}
}
class childClass extends parentClass {
childClass() {
System.out.println("Default constructor of the child class.");
}
}
class grandChildClass extends childClass {
grandChildClass() {
System.out.println("Default constructor of the grand child class.");
}
}
public class constructorsInInheritance {
public static void main(String[] args) {
grandChildClass obj = new grandChildClass();
}
}
Ausgabe:
Default constructor of the parent class.
Default constructor of the child class.
Default constructor of the grand child class.
Hier haben wir eine Testklasse namens constructorsInInheritance
, die das Objekt von grandChildClass
erstellt.
Wir haben drei weitere Klassen namens parentClass
, childClass
, grandChildClass
, wobei grandChildClass
die childClass
erbt und childClass
die parentClass
erweitert.
Dabei wird der Default-Konstruktor parentClass
automatisch von einem Konstruktor childClass
aufgerufen. Immer wenn wir die untergeordnete Klasse instanziieren, wird der Konstruktor der übergeordneten Klasse automatisch ausgeführt, gefolgt vom Konstruktor der untergeordneten Klasse.
Beachten Sie die oben angegebene Ausgabe. Wenn Sie immer noch verwirrt sind, sehen Sie sich die folgende visuelle Erklärung an.
Was ist, wenn wir ein Objekt der childClass
in der main
-Methode erstellen? Wie werden die Standardkonstruktoren jetzt ausgeführt?
Der Konstruktor der parentClass
wird zuerst ausgeführt, und dann liefert der Konstruktor der childClass
das folgende Ergebnis.
Ausgabe:
Default constructor of the parent class.
Default constructor of the child class.
Ausführung des Java-Konstruktors in der Vererbung, wenn die übergeordnete Klasse einen standardmäßigen und parametrisierten Konstruktor hat
Beispielcode:
class parentClass {
parentClass() {
System.out.println("Default constructor of the parent class.");
}
parentClass(String name) {
System.out.println("Hi " + name + "! It's a parameterized constructor of the parent class");
}
}
class childClass extends parentClass {
childClass() {
System.out.println("Default constructor of the child class.");
}
}
class grandChildClass extends childClass {
grandChildClass() {
System.out.println("Default constructor of the grand child class.");
}
}
public class constructorsInInheritance {
public static void main(String[] args) {
grandChildClass obj = new grandChildClass();
}
}
Ausgabe:
Default constructor of the parent class.
Default constructor of the child class.
Default constructor of the grand child class.
Hier haben wir einen parametrisierten Konstruktor in der parentClass
. Die Standardkonstruktoren werden jedoch immer noch aufgerufen, da wir den Standardkonstruktor grandChildClass()
in der Methode main
aufrufen und außerdem den Standardkonstruktor der übergeordneten Klasse aufrufen.
Lassen Sie uns auch die parametrisierten Konstruktoren in die childClass
und die grandChildClass
schreiben. Rufen Sie dann den parametrisierten Konstruktor der grandChildClass
in der Funktion main
auf.
Beobachten Sie, welche Konstruktoren aufgerufen werden, ob sie standardmäßig oder parametrisiert sind.
Beispielcode:
class parentClass {
parentClass() {
System.out.println("Default constructor of the parent class.");
}
parentClass(String name) {
System.out.println("Hi " + name + "! It's a parameterized constructor of the parent class");
}
}
class childClass extends parentClass {
childClass() {
System.out.println("Default constructor of the child class.");
}
childClass(String name) {
System.out.println("Hi " + name + "! It's a parameterized constructor of the child class");
}
}
class grandChildClass extends childClass {
grandChildClass() {
System.out.println("Default constructor of the grand child class.");
}
grandChildClass(String name) {
System.out.println(
"Hi " + name + "! It's a parameterized constructor of the grand child class");
}
}
public class constructorsInInheritance {
public static void main(String[] args) {
grandChildClass obj = new grandChildClass("Mehvish");
}
}
Ausgabe:
Default constructor of the parent class.
Default constructor of the child class.
Hi Mehvish! It's a parameterized constructor of the grand child class
Der obige Code ruft nur den parametrisierten Konstruktor der grandChildClass
auf. Wir verwenden super()
, um den parametrisierten Konstruktor der parentClass
, childClass
und der grandChildClass
aufzurufen.
Denken Sie daran, dass der Konstruktoraufruf der übergeordneten Klasse in der ersten Zeile des Konstruktors der untergeordneten Klasse stehen muss.
Verwenden Sie super
, um den parametrisierten Konstruktor der übergeordneten Klasse und aller untergeordneten Klassen aufzurufen
Beispielcode:
class parentClass {
parentClass() {
System.out.println("Default constructor of the parent class.");
}
parentClass(String name) {
System.out.println("Hi " + name + "! It's a parameterized constructor of the parent class");
}
}
class childClass extends parentClass {
childClass() {
System.out.println("Default constructor of the child class.");
}
childClass(String name) {
super(name);
System.out.println("Hi " + name + "! It's a parameterized constructor of the child class");
}
}
class grandChildClass extends childClass {
grandChildClass() {
System.out.println("Default constructor of the grand child class.");
}
grandChildClass(String name) {
super(name);
System.out.println(
"Hi " + name + "! It's a parameterized constructor of the grand child class");
}
}
public class constructorsInInheritance {
public static void main(String[] args) {
grandChildClass obj = new grandChildClass("Mehvish");
}
}
Ausgabe:
Hi Mehvish! It's a parameterized constructor of the parent class
Hi Mehvish! It's a parameterized constructor of the child class
Hi Mehvish! It's a parameterized constructor of the grand child class
Wir haben das Schlüsselwort super
verwendet, um den parametrisierten Konstruktor der übergeordneten Klasse aufzurufen. Sie bezieht sich auf die übergeordnete Klasse (Oberklasse oder Basisklasse).
Wir haben es verwendet, um auf den Konstruktor der übergeordneten Klasse zuzugreifen, und die Methoden der übergeordneten Klasse aufgerufen.
super
ist sehr nützlich für Methoden mit den exakten Namen in Eltern- und Kindklassen.