logo

Super-Schlüsselwort in Java

Der super Das Schlüsselwort in Java ist eine Referenzvariable, die verwendet wird, um auf ein unmittelbar übergeordnetes Klassenobjekt zu verweisen.

Immer wenn Sie die Instanz einer Unterklasse erstellen, wird implizit eine Instanz der übergeordneten Klasse erstellt, auf die durch die Superreferenzvariable verwiesen wird.

Verwendung des Java-Super-Schlüsselworts

  1. super kann verwendet werden, um auf die Instanzvariable der unmittelbar übergeordneten Klasse zu verweisen.
  2. super kann verwendet werden, um die Methode der unmittelbaren übergeordneten Klasse aufzurufen.
  3. super() kann verwendet werden, um den Konstruktor der unmittelbaren übergeordneten Klasse aufzurufen.
Verwendung des Java Super-Schlüsselworts

1) super wird verwendet, um auf die Instanzvariable der unmittelbar übergeordneten Klasse zu verweisen.

Wir können das Schlüsselwort super verwenden, um auf das Datenelement oder Feld der übergeordneten Klasse zuzugreifen. Es wird verwendet, wenn die übergeordnete und untergeordnete Klasse dieselben Felder haben.

tun, während in Java
 class Animal{ String color='white'; } class Dog extends Animal{ String color='black'; void printColor(){ System.out.println(color);//prints color of Dog class System.out.println(super.color);//prints color of Animal class } } class TestSuper1{ public static void main(String args[]){ Dog d=new Dog(); d.printColor(); }} 
Testen Sie es jetzt

Ausgabe:

 black white 

Im obigen Beispiel haben beide Klassen „Tier“ und „Hund“ eine gemeinsame Eigenschaftsfarbe. Wenn wir die Farbeigenschaft drucken, wird standardmäßig die Farbe der aktuellen Klasse gedruckt. Um auf die übergeordnete Eigenschaft zuzugreifen, müssen wir das Schlüsselwort super verwenden.

2) super kann verwendet werden, um die Methode der übergeordneten Klasse aufzurufen

Das Schlüsselwort super kann auch zum Aufrufen der übergeordneten Klassenmethode verwendet werden. Es sollte verwendet werden, wenn die Unterklasse dieselbe Methode wie die übergeordnete Klasse enthält. Mit anderen Worten: Es wird verwendet, wenn die Methode überschrieben wird.

 class Animal{ void eat(){System.out.println('eating...');} } class Dog extends Animal{ void eat(){System.out.println('eating bread...');} void bark(){System.out.println('barking...');} void work(){ super.eat(); bark(); } } class TestSuper2{ public static void main(String args[]){ Dog d=new Dog(); d.work(); }} 
Testen Sie es jetzt

Ausgabe:

 eating... barking... 

Im obigen Beispiel Animal und Dog verfügen beide Klassen über die Methode eat(). Wenn wir die Methode eat() aus der Klasse Dog aufrufen, wird standardmäßig die Methode eat() der Klasse Dog aufgerufen, da der lokalen Priorität eingeräumt wird.

Um die Methode der übergeordneten Klasse aufzurufen, müssen wir das Schlüsselwort super verwenden.

3) super wird verwendet, um den Konstruktor der übergeordneten Klasse aufzurufen.

Das Schlüsselwort super kann auch zum Aufrufen des Konstruktors der übergeordneten Klasse verwendet werden. Sehen wir uns ein einfaches Beispiel an:

 class Animal{ Animal(){System.out.println('animal is created');} } class Dog extends Animal{ Dog(){ super(); System.out.println('dog is created'); } } class TestSuper3{ public static void main(String args[]){ Dog d=new Dog(); }} 
Testen Sie es jetzt

Ausgabe:

 animal is created dog is created 

Hinweis: super() wird in jedem Klassenkonstruktor automatisch vom Compiler hinzugefügt, wenn es kein super() oder this() gibt.

Java ist großartig

Wie wir gut wissen, wird der Standardkonstruktor automatisch vom Compiler bereitgestellt, wenn kein Konstruktor vorhanden ist. Es fügt aber auch super() als erste Anweisung hinzu.

Ein weiteres Beispiel für das Schlüsselwort super, bei dem super() implizit vom Compiler bereitgestellt wird.

 class Animal{ Animal(){System.out.println('animal is created');} } class Dog extends Animal{ Dog(){ System.out.println('dog is created'); } } class TestSuper4{ public static void main(String args[]){ Dog d=new Dog(); }} 
Testen Sie es jetzt

Ausgabe:

 animal is created dog is created 

Superbeispiel: echter Nutzen

Sehen wir uns die tatsächliche Verwendung des Super-Schlüsselworts an. Hier erbt die Emp-Klasse die Person-Klasse, sodass alle Eigenschaften von Person standardmäßig an Emp geerbt werden. Um alle Eigenschaften zu initialisieren, verwenden wir den Konstruktor der übergeordneten Klasse aus der untergeordneten Klasse. Auf diese Weise verwenden wir den Konstruktor der übergeordneten Klasse wieder.

 class Person{ int id; String name; Person(int id,String name){ this.id=id; this.name=name; } } class Emp extends Person{ float salary; Emp(int id,String name,float salary){ super(id,name);//reusing parent constructor this.salary=salary; } void display(){System.out.println(id+' '+name+' '+salary);} } class TestSuper5{ public static void main(String[] args){ Emp e1=new Emp(1,'ankit',45000f); e1.display(); }} 
Testen Sie es jetzt

Ausgabe:

 1 ankit 45000