logo

Super avainsana Javassa

The super Avainsana Javassa on viitemuuttuja, jota käytetään viittaamaan välittömään emoluokan objektiin.

Aina kun luot aliluokan ilmentymän, emoluokan ilmentymä luodaan implisiittisesti, johon viitataan superviitemuuttujalla.

Java super-avainsanan käyttö

  1. super voidaan käyttää viittaamaan välittömään emoluokan ilmentymämuuttujaan.
  2. super voidaan kutsua välittömään yläluokkaan.
  3. super()-funktiota voidaan käyttää välittömän yläluokan rakentajan kutsumiseen.
Java Super -avainsanan käyttö

1) super käytetään viittaamaan välittömään emoluokan ilmentymämuuttujaan.

Voimme käyttää superavainsanaa päästäksemme pääluokan datajäseneen tai kenttiin. Sitä käytetään, jos yläluokalla ja alaluokalla on samat kentät.

unix-yläkomento
 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(); }} 
Testaa nyt

Lähtö:

 black white 

Yllä olevassa esimerkissä Animal ja Dog molemmilla luokilla on yhteinen ominaisuusväri. Jos tulostamme väriominaisuuden, se tulostaa oletuksena nykyisen luokan värin. Päästäksemme ylätason omaisuuteen meidän on käytettävä super-avainsanaa.

2) super voidaan vedota vanhempi luokan menetelmää

Super-avainsanaa voidaan käyttää myös pääluokan menetelmän kutsumiseen. Sitä tulee käyttää, jos alaluokka sisältää saman menetelmän kuin emoluokka. Toisin sanoen sitä käytetään, jos menetelmä on ohitettu.

 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(); }} 
Testaa nyt

Lähtö:

 eating... barking... 

Yllä olevassa esimerkissä Animal ja Dog molemmilla luokilla on eat()-metodi, jos kutsumme eat()-metodia Dog-luokasta, se kutsuu oletusarvoisesti Koira-luokan eat()-metodia, koska prioriteetti on paikalliselle.

Jotta voimme kutsua yläluokan menetelmää, meidän on käytettävä super-avainsanaa.

3) super käytetään kutsumaan vanhempi luokan rakentaja.

Super-avainsanaa voidaan käyttää myös pääluokan rakentajan kutsumiseen. Katsotaanpa yksinkertainen esimerkki:

 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(); }} 
Testaa nyt

Lähtö:

 animal is created dog is created 

Huomautus: Kääntäjä lisää jokaiseen luokkakonstruktoriin automaattisesti super(), jos ei ole super() tai this().

Java on hieno

Kuten tiedämme hyvin, oletuskonstruktorin kääntäjä tarjoaa automaattisesti, jos rakentajaa ei ole. Mutta se lisää myös super():n ensimmäiseksi lauseeksi.

Toinen esimerkki super-avainsanasta, jossa kääntäjä tarjoaa implisiittisesti super().

 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(); }} 
Testaa nyt

Lähtö:

 animal is created dog is created 

super esimerkki: todellinen käyttö

Katsotaanpa super-avainsanan todellista käyttöä. Tässä Emp-luokka perii Person-luokan, joten kaikki Henkilön ominaisuudet peritään oletuksena Emp:lle. Kaikkien ominaisuuksien alustamiseksi käytämme aliluokan yläluokan konstruktoria. Tällä tavalla käytämme uudelleen pääluokan rakentajaa.

 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(); }} 
Testaa nyt

Lähtö:

 1 ankit 45000