logo

Super Keyword en Java

El súper La paraula clau a Java és una variable de referència que s'utilitza per referir l'objecte de classe pare immediat.

Sempre que creeu la instància de subclasse, es crea implícitament una instància de classe pare a la qual es fa referència per una variable de superreferència.

Ús de la super paraula clau de Java

  1. super es pot utilitzar per referir la variable d'instància de classe pare immediata.
  2. super es pot utilitzar per invocar el mètode de classe pare immediat.
  3. super() es pot utilitzar per invocar el constructor de classe pare immediat.
Ús de la paraula clau Java Super

1) super s'utilitza per referir la variable d'instància de classe pare immediata.

Podem utilitzar la paraula clau super per accedir al membre de dades o al camp de la classe pare. S'utilitza si la classe pare i la classe fill tenen els mateixos camps.

seleccioneu entre diverses taules en sql
 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(); }} 
Prova-ho ara

Sortida:

 black white 

A l'exemple anterior, Animal i Gos ambdues classes tenen un color de propietat comú. Si imprimim la propietat del color, imprimirà el color de la classe actual per defecte. Per accedir a la propietat principal, hem d'utilitzar súper paraula clau.

2) super es pot utilitzar per invocar el mètode de classe pare

La paraula clau super també es pot utilitzar per invocar el mètode de classe pare. S'ha d'utilitzar si la subclasse conté el mateix mètode que la classe pare. En altres paraules, s'utilitza si se substitueix el mètode.

 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(); }} 
Prova-ho ara

Sortida:

 eating... barking... 

A l'exemple anterior, Animal i Dog, ambdues classes tenen el mètode eat() si cridem al mètode eat() des de la classe Dog, cridarà per defecte el mètode eat() de la classe Dog perquè es dóna prioritat a local.

Per cridar el mètode de classe pare, hem d'utilitzar la paraula clau super.

3) super s'utilitza per invocar el constructor de classe pare.

La paraula clau super també es pot utilitzar per invocar el constructor de classe pare. Vegem un exemple senzill:

 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(); }} 
Prova-ho ara

Sortida:

 animal is created dog is created 

Nota: super() s'afegeix automàticament a cada constructor de classes pel compilador si no hi ha super() o this().

Java és genial

Com bé sabem, el compilador proporciona el constructor per defecte automàticament si no hi ha constructor. Però, també afegeix super() com a primera declaració.

Un altre exemple de paraula clau super on el compilador proporciona super() implícitament.

 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(); }} 
Prova-ho ara

Sortida:

 animal is created dog is created 

super exemple: ús real

Vegem l'ús real de la súper paraula clau. Aquí, la classe Emp hereta la classe Person, de manera que totes les propietats de Person s'heretaran a Emp per defecte. Per inicialitzar tota la propietat, estem utilitzant el constructor de classe pare de la classe fill. D'aquesta manera, estem reutilitzant el constructor de classe pare.

 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(); }} 
Prova-ho ara

Sortida:

 1 ankit 45000