logo

Super nyckelord i Java

De super nyckelord i Java är en referensvariabel som används för att referera till överordnad klass när vi arbetar med objekt. Du måste känna till grunderna i Arv och Polymorfism för att förstå nyckelordet Java super.

Nyckelordet super kom in i bilden med begreppet Arv. I den här artikeln kommer vi att täcka allt om super i Java inklusive definitioner, exempel, användningar, syntax och mer.



Innehållsförteckning

Egenskaper för Super Keyword i Java

I Java används super nyckelord för att referera till förälderklassen för en underklass. Här är några av dess viktigaste egenskaper:

  • super används för att anropa en superklasskonstruktor: När en underklass skapas måste dess konstruktor anropa konstruktorn för dess överordnade klass. Detta görs med hjälp av nyckelordet super(), som anropar konstruktorn för den överordnade klassen.
  • super används för att anropa en superklassmetod: En underklass kan anropa en metod definierad i sin överordnade klass med hjälp av supernyckelordet. Detta är användbart när underklassen vill anropa förälderklassens implementering av metoden utöver sin egen.
  • super används för att komma åt ett superklassfält: En underklass kan komma åt ett fält som definieras i dess överordnade klass med hjälp av supernyckelordet. Detta är användbart när underklassen vill referera till moderklassens version av ett fält.
  • super måste vara det första påståendet i en konstruktor: När du anropar en superklasskonstruktor måste satsen super() vara den första satsen i underklassens konstruktor.
  • super kan inte användas i ett statiskt sammanhang: Supernyckelordet kan inte användas i ett statiskt sammanhang, som i en statisk metod eller en statisk variabelinitierare.
  • super krävs inte för att anropa en superklassmetod: Även om det är möjligt att använda supernyckelordet för att anropa en metod i den överordnade klassen, krävs det inte. Om en metod inte åsidosätts i underklassen, anropar den utan supernyckelordet den överordnade klassens implementering.

Sammantaget super nyckelord är ett kraftfullt verktyg för underklassning i Java, vilket gör att underklasser kan ärva och bygga vidare på funktionaliteten hos sina överordnade klasser.



Användning av super nyckelord i Java

Det används huvudsakligen i följande sammanhang som nämns nedan:

  • Användning av super med variabler
  • Användning av super med Metoder
  • Användning av super med konstruktörer

1. Användning av super med variabler

Det här scenariot inträffar när en härledd klass och basklass har samma datamedlemmar. I så fall finns det en möjlighet till oklarhet JVM .

Vi kan förstå det tydligare med följande exempel:



Exempel

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 exemplet ovan har både basklassen och underklassen en medlem maxSpeed. Vi kunde komma åt maxSpeed ​​för basklassen i underklass med hjälp av super nyckelord.

2. Användning av super med Metoder

Detta används när vi vill anropa föräldraklassen metod . Så närhelst en förälder- och barnklass har samma namn, använder vi nyckelordet super för att lösa tvetydigheter.

Detta kodavsnitt hjälper till att förstå den nämnda användningen av supernyckelordet.

Exempel

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 exemplet ovan har vi sett att om vi bara anropar metod meddelande() sedan anropas det aktuella klassmeddelandet() men med användning av supernyckelordet, meddelande() av superklassen kunde också åberopas.

3. Användning av super med konstruktörer

Nyckelordet super kan också användas för att komma åt den överordnade klasskonstruktorn. En viktigare sak är att 'super' kan anropa både parametriska och icke-parametriska konstruktörer beroende på situationen.

Följande är kodavsnittet för att förklara konceptet ovan:

Exempel 1

Java


powershell kommentar multiline



// 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 exemplet ovan har vi kallat superklasskonstruktorn med hjälp av nyckelordet 'super' via underklasskonstruktor.

Exempel 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>

Fördelar med att använda Java Super Keyword

De super nyckelord i Java ger många fördelar i objektorienterad programmering är följande:

  • Möjliggör återanvändning av kod : Genom att använda supernyckelordet kan underklasser ärva funktionalitet från sina överordnade klasser, vilket främjar återanvändning av kod och minskar duplicering.
  • Stöder polymorfism : Eftersom underklasser kan åsidosätta metoder och komma åt fält från sina överordnade klasser med hjälp av super, är polymorfism möjlig. Detta möjliggör mer flexibel och utbyggbar kod.
  • Ger tillgång till föräldraklassbeteende : Underklasser kan komma åt och använda metoder och fält som definieras i sina överordnade klasser genom supernyckelordet, vilket gör att de kan dra nytta av existerande beteende utan att behöva implementera det igen.
  • Möjliggör anpassning av beteende: Genom att åsidosätta metoder och använda super för att anropa den överordnade implementeringen, kan underklasser anpassa och utöka beteendet hos sina överordnade klasser.
  • Underlättar abstraktion och inkapsling: Användningen av super främjar inkapsling och abstraktion genom att tillåta underklasser att fokusera på sitt beteende samtidigt som de förlitar sig på att moderklassen hanterar detaljer på lägre nivå.

Sammantaget är supernyckelordet en nyckelfunktion i arv och polymorfism i Java, och det ger flera fördelar för utvecklare som vill skriva återanvändbar, utbyggbar och välorganiserad kod.

Viktiga punkter att komma ihåg när du använder Java Super Keyword

Här är några viktiga punkter som du måste ta hand om när du använder supernyckelord i Java:

  • Call to super() måste vara det första påståendet i klassen Derived(Student). konstruktör för om du tänker på det är det vettigt att superklassen inte har någon kunskap om någon underklass, så all initiering den behöver utföra är separat från och möjligen en förutsättning för eventuell initiering som utförs av underklassen. Därför måste det slutföras först.
  • Om en konstruktor inte uttryckligen anropar en superklasskonstruktor, infogar Java-kompilatorn automatiskt ett anrop till superklassens no-argument-konstruktor. Om superklassen inte har en no-argument-konstruktor får du ett kompileringsfel. Objektet gör har en sådan konstruktor, så om objektet är den enda superklassen är det inga problem.

super nyckelord i Java

  • Om en underklasskonstruktör anropar en konstruktor av sin superklass, antingen explicit eller implicit, kanske du tror att en hel kedja av konstruktörer anropas, hela vägen tillbaka till konstruktören av Object. Detta är faktiskt fallet. Det kallas konstruktörskedja .

Vanliga frågor – Java super nyckelord

Q1. Vad är super () och super nyckelord i Java?

Super() är ett Java-nyckelord som används för att anropa en superklasskonstruktor. Super får åtkomst till superklassmedlemmar och upprätthåller arvshierarkier.

Q2. Vilken är superklassen i Java?

De Objektklass aka superklass är överst i klasshierarkin i Javas java.lang-paket . Varje klass, oavsett om den är fördefinierad eller användardefinierad, är en underklass till klassen Object.

Q3. Varför är superviktigt i Java?

super är viktigt i Java eftersom det underlättar åtkomst, initiering och hantering av relationer mellan superklasser och underklasser, och därigenom främjar kodåteranvändbarhet.