logo

Szuper kulcsszó Java nyelven

A szuper A kulcsszó a Java nyelvben egy referenciaváltozó, amely az azonnali szülő osztály objektumainak hivatkozására szolgál.

Amikor létrehozza az alosztály példányát, a szülőosztály egy példánya implicit módon jön létre, amelyre a szuperhivatkozási változó hivatkozik.

Java szuper kulcsszó használata

  1. A super használható az azonnali szülő osztály példányváltozójára való hivatkozásra.
  2. super használható az azonnali szülő osztály metódusának meghívására.
  3. A super() használható az azonnali szülő osztály konstruktorának meghívására.
Java Super kulcsszó használata

1) super az azonnali szülő osztály példányváltozójára utal.

Szuper kulcsszóval elérhetjük a szülőosztály adattagját vagy mezőjét. Akkor használatos, ha a szülőosztály és a gyermekosztály azonos mezőkkel rendelkezik.

string összehasonlítás java-ban
 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(); }} 
Tesztelje most

Kimenet:

 black white 

A fenti példában az Állat és a Kutya osztálynak közös tulajdonságszíne van. Ha színtulajdonságot nyomtatunk, akkor alapértelmezés szerint az aktuális osztály színét nyomtatja ki. A szülőtulajdon eléréséhez szuper kulcsszót kell használnunk.

2) super használható a szülő osztály metódusának meghívására

A szuper kulcsszó a szülő osztály metódusának meghívására is használható. Akkor kell használni, ha az alosztály ugyanazt a metódust tartalmazza, mint a szülőosztály. Más szóval, akkor használatos, ha a módszer felül van írva.

 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(); }} 
Tesztelje most

Kimenet:

 eating... barking... 

A fenti példában az Animal és Dog mindkét osztálynak van eat() metódusa, ha a Dog osztályból meghívjuk az eat() metódust, akkor alapértelmezés szerint a Dog osztály eat() metódusát fogja meghívni, mivel a local prioritást élvez.

A szülő osztály metódusának meghívásához szuper kulcsszót kell használnunk.

3) a super a szülő osztály konstruktorának meghívására szolgál.

A szuper kulcsszó a szülő osztály konstruktorának meghívására is használható. Lássunk egy egyszerű példát:

 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(); }} 
Tesztelje most

Kimenet:

 animal is created dog is created 

Megjegyzés: a fordító automatikusan hozzáadja a super()-t minden osztálykonstruktorhoz, ha nincs super() vagy this().

A Java nagyszerű

Jól tudjuk, hogy az alapértelmezett konstruktort a fordító automatikusan biztosítja, ha nincs konstruktor. De az első utasításként hozzáadja a super()-t is.

Egy másik példa a szuper kulcsszóra, ahol a super()-t a fordító implicit módon biztosítja.

 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(); }} 
Tesztelje most

Kimenet:

 animal is created dog is created 

szuper példa: valós használat

Lássuk a szuper kulcsszó valódi használatát. Itt az Emp osztály a Person osztályt örökli, így a Person összes tulajdonságát alapértelmezés szerint az Emp örökli. Az összes tulajdonság inicializálásához szülőosztály-konstruktort használunk a gyermekosztályból. Ily módon újra felhasználjuk a szülő osztály konstruktorát.

 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(); }} 
Tesztelje most

Kimenet:

 1 ankit 45000