Det super nøgleord i Java er en referencevariabel, der bruges til at henvise til overordnet klasse, når vi arbejder med objekter. Du skal kende det grundlæggende Arv og Polymorfi at forstå Java super nøgleordet.
Nøgleordet super kom ind i billedet med begrebet Arv. I denne artikel vil vi dække alt om super i Java, herunder definitioner, eksempler, anvendelser, syntaks og mere.
Indholdsfortegnelse
- Karakteristika for Super Keyword i Java
- Brug af super nøgleord i Java
- 1. Brug af super med variabler
- 2. Brug af super med Metoder
- 3. Brug af super med konstruktører
- Fordele ved at bruge Java Super Keyword
Karakteristika for Super Keyword i Java
I Java bruges super nøgleord til at henvise til en underklasses overordnede klasse. Her er nogle af dens vigtigste egenskaber:
- super bruges til at kalde en superklasse-konstruktør: Når en underklasse oprettes, skal dens konstruktør kalde konstruktøren af dens overordnede klasse. Dette gøres ved hjælp af nøgleordet super(), som kalder konstruktøren af den overordnede klasse.
- super bruges til at kalde en superklassemetode: En underklasse kan kalde en metode defineret i dens overordnede klasse ved hjælp af super nøgleordet. Dette er nyttigt, når underklassen ønsker at påberåbe sig den overordnede klasses implementering af metoden ud over sin egen.
- super bruges til at få adgang til et superklassefelt: En underklasse kan få adgang til et felt, der er defineret i dens overordnede klasse, ved hjælp af supernøgleordet. Dette er nyttigt, når underklassen ønsker at referere til den overordnede klasses version af et felt.
- super skal være det første udsagn i en konstruktør: Når du kalder en superklassekonstruktør, skal super()-sætningen være den første sætning i underklassens konstruktør.
- super kan ikke bruges i en statisk kontekst: Supernøgleordet kan ikke bruges i en statisk kontekst, såsom i en statisk metode eller en initialisering af statisk variabel.
- super er ikke påkrævet for at kalde en superklasse-metode: Selvom det er muligt at bruge supernøgleordet til at kalde en metode i den overordnede klasse, er det ikke påkrævet. Hvis en metode ikke tilsidesættes i underklassen, vil kald af den uden supernøgleordet påkalde overordnet klasses implementering.
Samlet set super nøgleord er et kraftfuldt værktøj til underklassificering i Java, som gør det muligt for underklasser at arve og bygge videre på funktionaliteten af deres overordnede klasser.
Brug af super nøgleord i Java
Det bruges hovedsageligt i følgende sammenhænge som nævnt nedenfor:
- Brug af super med variabler
- Brug af super med Metoder
- Brug af super med konstruktører
1. Brug af super med variabler
Dette scenarie opstår, når en afledt klasse og basisklasse har de samme datamedlemmer. I så fald er der mulighed for uklarhed JVM .
Vi kan forstå det mere klart ved at bruge følgende eksempel:
Eksempel
Java
// super keyword in java example> > // Base class vehicle> class> Vehicle {> >int> maxSpeed =>120>;> }> > // sub class Car extending vehicle> class> Car>extends> Vehicle {> >int> maxSpeed =>180>;> > >void> display()> >{> >// print maxSpeed of base class (vehicle)> >System.out.println(>'Maximum Speed: '> >+>super>.maxSpeed);> >}> }> > // Driver Program> class> Test {> >public> static> void> main(String[] args)> >{> >Car small =>new> Car();> >small.display();> >}> }> |
>
>Produktion
Maximum Speed: 120>
I ovenstående eksempel har både basisklassen og underklassen et medlem maxSpeed. Vi kunne få adgang til maxSpeed for basisklassen i underklassen ved hjælp af super nøgleord.
2. Brug af super med Metoder
Dette bruges når vi vil kalde forældreklassen metode . Så hver gang en forælder- og børneklasse har samme navngivne metoder, bruger vi supernøgleordet til at løse tvetydigheden.
Dette kodestykke hjælper med at forstå den nævnte brug af supersøgeordet.
Eksempel
Java
// super keyword in java example> > // superclass Person> class> Person {> >void> message()> >{> >System.out.println(>'This is person class
'>);> >}> }> // Subclass Student> class> Student>extends> Person {> >void> message()> >{> >System.out.println(>'This is student class'>);> >}> >// Note that display() is> >// only in Student class> >void> display()> >{> >// will invoke or call current> >// class message() method> >message();> > >// will invoke or call parent> >// class message() method> >super>.message();> >}> }> // Driver Program> class> Test {> >public> static> void> main(String args[])> >{> >Student s =>new> Student();> > >// calling display() of Student> >s.display();> >}> }> |
>
>Produktion
This is student class This is person class>
I ovenstående eksempel har vi set, at hvis vi kun kalder metode besked() derefter fremkaldes den aktuelle klassemeddelelse(), men med brugen af supernøgleordet, besked() af superklassen kunne også påberåbes.
3. Brug af super med konstruktører
Supernøgleordet kan også bruges til at få adgang til den overordnede klassekonstruktør. En mere vigtig ting er, at 'super' kan kalde både parametriske såvel som ikke-parametriske konstruktører afhængigt af situationen.
Følgende er kodestykket til at forklare ovenstående koncept:
Eksempel 1
Java
hvordan man udfører et script
// Java Code to show use of> // super keyword with constructor> > // superclass Person> class> Person {> >Person()> >{> >System.out.println(>'Person class Constructor'>);> >}> }> > // subclass Student extending the Person class> class> Student>extends> Person {> >Student()> >{> >// invoke or call parent class constructor> >super>();> > >System.out.println(>'Student class Constructor'>);> >}> }> > // Driver Program> class> Test {> >public> static> void> main(String[] args)> >{> >Student s =>new> Student();> >}> }> |
>
>Produktion
Person class Constructor Student class Constructor>
I ovenstående eksempel har vi kaldt superklassekonstruktøren ved at bruge søgeordet 'super' via underklassekonstruktør.
Eksempel 2
Java
class> ParentClass {> >public> boolean> isTrue() {>return> true>; }> }> > class> ChildClass>extends> ParentClass {> >public> boolean> isTrue()> >{> >// calls parent implementation of isTrue()> >boolean> parentResult =>super>.isTrue();> >// negates the parent result> >return> !parentResult;> >}> }> > public> class> Main {> >public> static> void> main(String[] args)> >{> >ChildClass child =>new> ChildClass();> >// calls child implementation> >// of isTrue()> >boolean> result = child.isTrue();> > >// prints 'false'> >System.out.println(result);> >}> }> |
>
>Produktion
false>
Fordele ved at bruge Java Super Keyword
Det super nøgleord i Java giver mange fordele i objektorienteret programmering er som følger:
- Muliggør genbrug af kode : Brug af supernøgleordet tillader underklasser at arve funktionalitet fra deres overordnede klasser, hvilket fremmer genbrug af kode og reducerer duplikering.
- Understøtter polymorfi : Fordi underklasser kan tilsidesætte metoder og få adgang til felter fra deres overordnede klasser ved hjælp af super, er polymorfi mulig. Dette giver mulighed for mere fleksibel og udvidelsesbar kode.
- Giver adgang til forældreklassens adfærd : Underklasser kan få adgang til og bruge metoder og felter defineret i deres overordnede klasser gennem supernøgleordet, som giver dem mulighed for at drage fordel af eksisterende adfærd uden at skulle genimplementere det.
- Giver mulighed for tilpasning af adfærd: Ved at tilsidesætte metoder og bruge super til at kalde den overordnede implementering, kan underklasser tilpasse og udvide adfærden for deres overordnede klasser.
- Letter abstraktion og indkapsling: Brugen af super fremmer indkapsling og abstraktion ved at tillade underklasser at fokusere på deres adfærd, mens de stoler på, at forældreklassen håndterer detaljer på lavere niveau.
Overordnet set er supersøgeordet et centralt træk ved arv og polymorfi i Java, og det giver flere fordele for udviklere, der søger at skrive genbrugelig, udvidelsesbar og velorganiseret kode.
Vigtige punkter at huske, når du bruger Java Super Keyword
Her er nogle vigtige punkter, som du skal passe på, når du bruger supernøgleord i Java:
- Kald til super() skal være det første udsagn i Afledte(Student) Class konstruktør fordi hvis du tænker over det, giver det mening, at superklassen ikke har kendskab til nogen underklasse, så enhver initialisering, den skal udføre, er adskilt fra og muligvis en forudsætning for enhver initialisering udført af underklassen. Derfor skal den færdiggøre sin udførelse først.
- Hvis en konstruktør ikke eksplicit kalder en superklassekonstruktør, indsætter Java-kompileren automatisk et kald til superklassens no-argument-konstruktør. Hvis superklassen ikke har en no-argument constructor, vil du få en kompileringsfejl. Objektet gør har sådan en konstruktør, så hvis Objektet er den eneste superklasse, er der ikke noget problem.

- Hvis en underklassekonstruktør kalder en konstruktør af sin superklasse, enten eksplicit eller implicit, tror du måske, at en hel kæde af konstruktører kaldes, helt tilbage til objektkonstruktøren. Dette er faktisk tilfældet. Det kaldes konstruktør kæde .
Ofte stillede spørgsmål – Java super søgeord
Q1. Hvad er super () og super nøgleord i Java?
Super() er et Java nøgleord, der bruges til at kalde en superklasse konstruktør. Super får adgang til superklassemedlemmer og vedligeholder arvehierarkier.
Q2. Hvilken er superklassen af Java?
Det Objektklasse aka superklasse er øverst i klassehierarkiet i Javas java.lang-pakke . Hver klasse, uanset om den er foruddefineret eller brugerdefineret, er en underklasse af klassen Object.
Q3. Hvorfor er Super vigtigt i Java?
super er essentielt i Java, da det letter adgangen, initialiseringen og styringen af relationer mellem superklasser og underklasser, og derved fremmer kodegenanvendelighed.