logo

Super kľúčové slovo v jazyku Java

The Super Kľúčové slovo v jazyku Java je referenčná premenná, ktorá sa používa na odkazovanie na objekt bezprostrednej nadradenej triedy.

Kedykoľvek vytvoríte inštanciu podtriedy, implicitne sa vytvorí inštancia nadradenej triedy, na ktorú odkazuje nadradená referenčná premenná.

Použitie super kľúčového slova Java

  1. super možno použiť na odkazovanie premennej inštancie bezprostrednej nadradenej triedy.
  2. super možno použiť na vyvolanie metódy bezprostrednej rodičovskej triedy.
  3. super() možno použiť na vyvolanie konštruktora bezprostrednej rodičovskej triedy.
Použitie kľúčového slova Java Super

1) super sa používa na označenie premennej inštancie bezprostrednej nadradenej triedy.

Na prístup k dátovému členu alebo poli nadradenej triedy môžeme použiť kľúčové slovo super. Používa sa, ak nadradená trieda a podradená trieda majú rovnaké polia.

typ dátumu strojopisu
 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(); }} 
Vyskúšajte to

Výkon:

 black white 

Vo vyššie uvedenom príklade majú obe triedy Zviera a Pes spoločnú farbu vlastnosti. Ak vytlačíme vlastnosť farby, štandardne vytlačí farbu aktuálnej triedy. Na prístup k rodičovskej vlastnosti musíme použiť kľúčové slovo super.

2) super možno použiť na vyvolanie metódy rodičovskej triedy

Kľúčové slovo super možno použiť aj na vyvolanie metódy rodičovskej triedy. Mal by sa použiť, ak podtrieda obsahuje rovnakú metódu ako rodičovská trieda. Inými slovami, používa sa, ak je metóda prepísaná.

 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(); }} 
Vyskúšajte to

Výkon:

 eating... barking... 

Vo vyššie uvedenom príklade Zviera a Pes majú obe triedy metódu eat(), ak zavoláme metódu eat() z triedy Pes, štandardne zavolá metódu eat() triedy Pes, pretože prioritu má lokálna.

Na zavolanie metódy rodičovskej triedy musíme použiť kľúčové slovo super.

3) super sa používa na vyvolanie konštruktora rodičovskej triedy.

Kľúčové slovo super možno použiť aj na vyvolanie konštruktora nadradenej triedy. Pozrime sa na jednoduchý príklad:

 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(); }} 
Vyskúšajte to

Výkon:

 animal is created dog is created 

Poznámka: super() sa pridáva do každého konštruktora triedy automaticky kompilátorom, ak neexistuje super() alebo toto().

Java je skvelá

Ako dobre vieme, predvolený konštruktor poskytuje kompilátor automaticky, ak neexistuje žiadny konštruktor. Ale tiež pridá super() ako prvý príkaz.

Ďalší príklad kľúčového slova super, kde super() poskytuje kompilátor implicitne.

 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(); }} 
Vyskúšajte to

Výkon:

 animal is created dog is created 

super príklad: reálne využitie

Pozrime sa na skutočné využitie super kľúčového slova. Tu trieda Emp zdedí triedu Person, takže všetky vlastnosti osoby budú predvolene zdedené na Emp. Na inicializáciu celej vlastnosti používame konštruktor rodičovskej triedy z podradenej triedy. Týmto spôsobom znova používame konštruktor rodičovskej triedy.

 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(); }} 
Vyskúšajte to

Výkon:

 1 ankit 45000