logo

Super søgeord i Java

Det super nøgleord i Java er en referencevariabel, som bruges til at henvise til det umiddelbare overordnede klasseobjekt.

Når du opretter forekomsten af ​​underklassen, oprettes en forekomst af den overordnede klasse implicit, som henvises til af superreferencevariablen.

Brug af Java super nøgleord

  1. super kan bruges til at henvise til den umiddelbare overordnede klasseinstansvariabel.
  2. super kan bruges til at påberåbe den umiddelbare overordnede klassemetode.
  3. super() kan bruges til at fremkalde umiddelbar overordnet klassekonstruktør.
Brug af Java Super nøgleord

1) super bruges til at henvise til den umiddelbare overordnede klasseinstansvariabel.

Vi kan bruge supernøgleord til at få adgang til datamedlemmet eller feltet for overordnet klasse. Det bruges, hvis forældreklasse og børneklasse har samme felter.

hvordan man udfører et script
 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(); }} 
Test det nu

Produktion:

 black white 

I ovenstående eksempel har begge klasser Dyr og Hund en fælles egenskabsfarve. Hvis vi udskriver farveegenskab, vil den som standard udskrive farven på den nuværende klasse. For at få adgang til moderejendommen skal vi bruge super søgeord.

2) super kan bruges til at påberåbe sig overordnet klassemetode

Super nøgleordet kan også bruges til at påkalde overordnet klassemetode. Den skal bruges, hvis underklassen indeholder samme metode som overordnet klasse. Med andre ord bruges den, hvis metode er tilsidesat.

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

Produktion:

 eating... barking... 

I eksemplet ovenfor, Animal og Dog, har begge klasser eat()-metoden, hvis vi kalder eat()-metoden fra Dog-klassen, kalder den eat()-metoden for Dog-klassen som standard, fordi der gives prioritet til local.

For at kalde den overordnede klassemetode skal vi bruge super nøgleord.

3) super bruges til at påkalde overordnet klassekonstruktør.

Supernøgleordet kan også bruges til at kalde den overordnede klassekonstruktør. Lad os se et simpelt eksempel:

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

Produktion:

 animal is created dog is created 

Bemærk: super() tilføjes automatisk i hver klassekonstruktør af compiler, hvis der ikke er super() eller this().

Java er fantastisk

Som vi godt ved, leveres standardkonstruktøren automatisk af compileren, hvis der ikke er en konstruktør. Men det tilføjer også super() som det første udsagn.

Et andet eksempel på super nøgleord, hvor super() leveres af compileren 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(); }} 
Test det nu

Produktion:

 animal is created dog is created 

super eksempel: rigtig brug

Lad os se den reelle brug af super søgeord. Her arver Emp-klassen Person-klassen, så alle egenskaberne for Person vil blive arvet til Emp som standard. For at initialisere hele egenskaben bruger vi en overordnet klassekonstruktør fra den underordnede klasse. På den måde genbruger vi den overordnede klassekonstruktør.

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

Produktion:

 1 ankit 45000