De super nøkkelord i Java er en referansevariabel som brukes til å referere til overordnet klasse når vi jobber med objekter. Du må vite det grunnleggende om Arv og Polymorfisme for å forstå søkeordet Java super.
Nøkkelordet super kom inn i bildet med begrepet arv. I denne artikkelen skal vi dekke alt om super i Java, inkludert definisjoner, eksempler, bruksområder, syntaks og mer.
Innholdsfortegnelse
- Kjennetegn på Super Keyword i Java
- Bruk av supernøkkelord i Java
- 1. Bruk av super med variabler
- 2. Bruk av super med Metoder
- 3. Bruk av super med konstruktører
- Fordeler med å bruke Java Super Keyword
Kjennetegn på Super Keyword i Java
I Java brukes super nøkkelord for å referere til den overordnede klassen til en underklasse. Her er noen av de viktigste egenskapene:
- super brukes til å kalle en superklasse-konstruktør: Når en underklasse opprettes, må konstruktøren kalle konstruktøren til den overordnede klassen. Dette gjøres ved å bruke nøkkelordet super(), som kaller konstruktøren til den overordnede klassen.
- super brukes til å kalle en superklassemetode: En underklasse kan kalle en metode definert i dens overordnede klasse ved å bruke supernøkkelordet. Dette er nyttig når underklassen ønsker å påkalle den overordnede klassens implementering av metoden i tillegg til sin egen.
- super brukes for å få tilgang til et superklassefelt: En underklasse kan få tilgang til et felt definert i dens overordnede klasse ved å bruke supernøkkelordet. Dette er nyttig når underklassen ønsker å referere til den overordnede klassens versjon av et felt.
- super må være den første setningen i en konstruktør: Når du kaller en superklassekonstruktør, må super()-setningen være den første setningen i konstruktøren til underklassen.
- super kan ikke brukes i en statisk kontekst: Supernøkkelordet kan ikke brukes i en statisk kontekst, for eksempel i en statisk metode eller en initialisering av statisk variabel.
- super er ikke nødvendig for å kalle en superklassemetode: Selv om det er mulig å bruke supernøkkelordet for å kalle en metode i overordnet klasse, er det ikke nødvendig. Hvis en metode ikke overstyres i underklassen, vil det å kalle den uten supernøkkelordet påkalle den overordnede klassens implementering.
Samlet sett super nøkkelord er et kraftig verktøy for underklassing i Java, som lar underklasser arve og bygge på funksjonaliteten til overordnede klasser.
Bruk av supernøkkelord i Java
Det brukes hovedsakelig i følgende sammenhenger som nevnt nedenfor:
- Bruk av super med variabler
- Bruk av super med Metoder
- Bruk av super med konstruktører
1. Bruk av super med variabler
Dette scenariet oppstår når en avledet klasse og basisklasse har de samme datamedlemmene. I så fall er det en mulighet for tvetydighet JVM .
Vi kan forstå det klarere ved å bruke 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();> >}> }> |
>
>Produksjon
Maximum Speed: 120>
I eksemplet ovenfor har både basisklassen og underklassen et medlem maxSpeed. Vi kunne få tilgang til maxSpeed for basisklassen i underklassen ved å bruke super nøkkelord.
2. Bruk av super med Metoder
Dette brukes når vi ønsker å kalle foreldreklassen metode . Så når en forelder- og barneklasse har samme navn, bruker vi supernøkkelordet for å løse tvetydighet.
Denne kodebiten hjelper deg med å forstå den nevnte bruken av supernøkkelordet.
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();> >}> }> |
>
>Produksjon
This is student class This is person class>
I eksemplet ovenfor har vi sett at hvis vi bare kaller metode beskjed() da blir den nåværende klassemeldingen() påkalt, men med bruk av supernøkkelordet, beskjed() av superklassen kunne også påberopes.
3. Bruk av super med konstruktører
Supernøkkelordet kan også brukes for å få tilgang til den overordnede klassekonstruktøren. En annen viktig ting er at 'super' kan kalle både parametriske så vel som ikke-parametriske konstruktører avhengig av situasjonen.
Følgende er kodebiten for å forklare konseptet ovenfor:
Eksempel 1
Java
strengformat i java
// 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();> >}> }> |
>
>Produksjon
Person class Constructor Student class Constructor>
I eksemplet ovenfor har vi kalt superklassekonstruktøren ved å bruke nøkkelordet '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);> >}> }> |
>
>Produksjon
false>
Fordeler med å bruke Java Super Keyword
De super nøkkelord i Java gir mange fordeler i objektorientert programmering er som følger:
- Muliggjør gjenbruk av kode : Ved å bruke supernøkkelordet kan underklasser arve funksjonalitet fra overordnede klasser, noe som fremmer gjenbruk av kode og reduserer duplisering.
- Støtter polymorfisme : Fordi underklasser kan overstyre metoder og få tilgang til felt fra overordnede klasser ved å bruke super, er polymorfisme mulig. Dette gir mulighet for mer fleksibel og utvidbar kode.
- Gir tilgang til oppførsel i foreldreklassen : Underklasser kan få tilgang til og bruke metoder og felt definert i overordnede klasser gjennom supernøkkelordet, som lar dem dra nytte av eksisterende atferd uten å måtte implementere den på nytt.
- Gir mulighet for tilpasning av atferd: Ved å overstyre metoder og bruke super for å kalle den overordnede implementeringen, kan underklasser tilpasse og utvide oppførselen til overordnede klasser.
- Forenkler abstraksjon og innkapsling: Bruken av super fremmer innkapsling og abstraksjon ved å la underklasser fokusere på oppførselen sin mens de stoler på at foreldreklassen håndterer detaljer på lavere nivå.
Totalt sett er supernøkkelordet et sentralt trekk ved arv og polymorfisme i Java, og det gir flere fordeler for utviklere som ønsker å skrive gjenbrukbar, utvidbar og godt organisert kode.
Viktige punkter å huske når du bruker Java Super Keyword
Her er noen viktige punkter du må ta vare på når du bruker supernøkkelord i Java:
- Call to super() må være den første setningen i Avledet(Student) Class konstruktør fordi hvis du tenker på det, er det fornuftig at superklassen ikke har kunnskap om noen underklasse, så enhver initialisering den må utføre er atskilt fra og muligens en forutsetning for enhver initialisering utført av underklassen. Derfor må den fullføre utførelsen først.
- Hvis en konstruktør ikke eksplisitt påkaller en superklassekonstruktør, setter Java-kompilatoren automatisk inn et kall til no-argument-konstruktøren til superklassen. Hvis superklassen ikke har en no-argument-konstruktør, vil du få en kompileringstidsfeil. Objektet gjør har en slik konstruktør, så hvis objektet er den eneste superklassen, er det ikke noe problem.

- Hvis en underklassekonstruktør påkaller en konstruktør av sin superklasse, enten eksplisitt eller implisitt, kan du kanskje tro at en hel kjede av konstruktører kalles, helt tilbake til konstruktøren til Object. Dette er faktisk tilfelle. Det kalles konstruktørkjeding .
Vanlige spørsmål – Java super nøkkelord
Q1. Hva er super () og super nøkkelord i Java?
Super() er et Java nøkkelord som brukes til å kalle en superklassekonstruktør. Super får tilgang til superklassemedlemmer og opprettholder arvehierarkier.
Q2. Hvilken er superklassen til Java?
De Objektklasse aka superklasse er på toppen av klassehierarkiet i Javas java.lang-pakke . Hver klasse, enten forhåndsdefinert eller brukerdefinert, er en underklasse av Object-klassen.
Q3. Hvorfor er Super viktig i Java?
super er essensielt i Java siden det letter tilgang, initialisering og administrasjon av relasjoner mellom superklasser og underklasser, og fremmer dermed gjenbruk av kode.