logo

Super nyckelord i Java

De super nyckelord i Java är en referensvariabel som används för att hänvisa till omedelbart överordnat klassobjekt.

När du skapar instansen av underklass skapas en instans av överordnad klass implicit som refereras av superreferensvariabel.

Användning av Java Super Keyword

  1. super kan användas för att hänvisa till omedelbar överordnad klassinstansvariabel.
  2. super kan användas för att anropa den omedelbara överordnade klassmetoden.
  3. super() kan användas för att anropa omedelbar överordnad klasskonstruktor.
Användning av Java Super nyckelord

1) super används för att hänvisa till omedelbar överordnad klassinstansvariabel.

Vi kan använda supernyckelord för att komma åt datamedlemmen eller fältet för överordnad klass. Den används om förälderklass och barnklass har samma fält.

powershell kommentar multiline
 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(); }} 
Testa det nu

Produktion:

 black white 

I exemplet ovan har båda klasserna Djur och Hund en gemensam egenskapsfärg. Om vi ​​skriver ut färgegenskapen kommer den att skriva ut färgen för nuvarande klass som standard. För att komma åt överordnad egendom måste vi använda super nyckelord.

2) super kan användas för att anropa föräldraklassmetoden

Nyckelordet super kan också användas för att anropa den överordnade klassmetoden. Den ska användas om underklass innehåller samma metod som överordnad klass. Med andra ord används den om metoden åsidosätts.

 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(); }} 
Testa det nu

Produktion:

 eating... barking... 

I exemplet ovan Animal och Dog har båda klasserna eat()-metoden om vi anropar eat()-metoden från klassen Dog, kommer den att anropa eat()-metoden för klassen Dog som standard eftersom prioritet ges till local.

För att anropa föräldraklassmetoden måste vi använda super nyckelord.

3) super används för att anropa överordnad klasskonstruktor.

Nyckelordet super kan också användas för att anropa den överordnade klasskonstruktorn. Låt oss se ett enkelt exempel:

 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(); }} 
Testa det nu

Produktion:

 animal is created dog is created 

Obs: super() läggs till i varje klasskonstruktor automatiskt av kompilatorn om det inte finns någon super() eller this().

Java är jättebra

Som vi väl vet att standardkonstruktorn tillhandahålls av kompilatorn automatiskt om det inte finns någon konstruktor. Men den lägger också till super() som det första påståendet.

Ett annat exempel på super nyckelord där super() tillhandahålls av kompilatorn implicit.

 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(); }} 
Testa det nu

Produktion:

 animal is created dog is created 

superexempel: verklig användning

Låt oss se den verkliga användningen av supersökord. Här ärver Emp-klassen Person-klassen så alla egenskaper för Person kommer att ärvas till Emp som standard. För att initiera all egenskap använder vi en överordnad klasskonstruktor från underordnad klass. På så sätt återanvänder vi den överordnade klasskonstruktören.

 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(); }} 
Testa det nu

Produktion:

 1 ankit 45000