De supertrefwoord in Java is een referentievariabele die wordt gebruikt om naar de bovenliggende klasse te verwijzen wanneer we met objecten werken. Je moet de basis kennen van Erfenis En Polymorfisme om het Java-super-trefwoord te begrijpen.
Het trefwoord super kwam in beeld met het concept van de erfenis. In dit artikel gaan we alles over super in Java bespreken, inclusief definities, voorbeelden, toepassingen, syntaxis en meer.
Inhoudsopgave
- Kenmerken van Super Keyword in Java
- Gebruik van supertrefwoord in Java
- 1. Gebruik van super met variabelen
- 2. Gebruik van super met methoden
- 3. Gebruik van super met constructeurs
- Voordelen van het gebruik van Java Super Keyword
Kenmerken van Super Keyword in Java
In Java wordt het supersleutelwoord gebruikt om naar de bovenliggende klasse van een subklasse te verwijzen. Hier zijn enkele van de belangrijkste kenmerken:
- super wordt gebruikt om een superklasse-constructor aan te roepen: Wanneer een subklasse wordt gemaakt, moet de constructor ervan de constructor van de bovenliggende klasse aanroepen. Dit wordt gedaan met behulp van het sleutelwoord super(), dat de constructor van de bovenliggende klasse aanroept.
- super wordt gebruikt om een superklassemethode aan te roepen: Een subklasse kan een methode aanroepen die in de bovenliggende klasse is gedefinieerd met behulp van het sleutelwoord super. Dit is handig wanneer de subklasse naast zijn eigen implementatie van de methode ook de implementatie van de methode door de bovenliggende klasse wil aanroepen.
- super wordt gebruikt om toegang te krijgen tot een superklasseveld: Een subklasse heeft toegang tot een veld dat in de bovenliggende klasse is gedefinieerd met behulp van het trefwoord super. Dit is handig wanneer de subklasse wil verwijzen naar de versie van een veld van de bovenliggende klasse.
- super moet de eerste instructie in een constructor zijn: Bij het aanroepen van een superklasse-constructor moet het super()-statement het eerste statement zijn in de constructor van de subklasse.
- super kan niet worden gebruikt in een statische context: Het super trefwoord kan niet worden gebruikt in een statische context, zoals in een statische methode of een statische variabele-initialisatiefunctie.
- super is niet vereist om een superklassemethode aan te roepen: Hoewel het mogelijk is om het sleutelwoord super te gebruiken om een methode in de bovenliggende klasse aan te roepen, is dit niet vereist. Als een methode in de subklasse niet wordt overschreven, zal het aanroepen ervan zonder het trefwoord super de implementatie van de bovenliggende klasse oproepen.
Over het geheel genomen de supertrefwoord is een krachtig hulpmiddel voor subklassen in Java, waardoor subklassen de functionaliteit van hun bovenliggende klassen kunnen erven en erop kunnen voortbouwen.
Gebruik van supertrefwoord in Java
Het wordt voornamelijk gebruikt in de volgende contexten, zoals hieronder vermeld:
- Gebruik van super met variabelen
- Gebruik van super met methoden
- Gebruik van super met Constructors
1. Gebruik van super met variabelen
Dit scenario doet zich voor wanneer een afgeleide klasse en een basisklasse dezelfde gegevensleden hebben. In dat geval bestaat er kans op onduidelijkheid JVM .
We kunnen het duidelijker begrijpen aan de hand van het volgende voorbeeld:
Voorbeeld
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();> >}> }> |
>
>Uitvoer
Maximum Speed: 120>
In het bovenstaande voorbeeld hebben zowel de basisklasse als de subklasse een lid maxSpeed. We konden toegang krijgen tot de maxSpeed van de basisklasse in de subklasse met behulp van het supertrefwoord.
2. Gebruik van super met methoden
Dit wordt gebruikt als we de bovenliggende klasse willen aanroepen methode . Dus wanneer een ouder- en kindklasse dezelfde methoden hebben, gebruiken we het sleutelwoord super om dubbelzinnigheid op te lossen.
Dit codefragment helpt het genoemde gebruik van het superzoekwoord te begrijpen.
Voorbeeld
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();> >}> }> |
>
>Uitvoer
This is student class This is person class>
In het bovenstaande voorbeeld hebben we gezien dat als we alleen method bericht() vervolgens wordt de huidige klasse message() aangeroepen, maar met het gebruik van het super trefwoord, bericht() van de superklasse kan ook worden ingeroepen.
3. Gebruik van super met constructeurs
Het super trefwoord kan ook worden gebruikt om toegang te krijgen tot de constructor van de bovenliggende klasse. Nog belangrijker is dat ‘super’ zowel parametrische als niet-parametrische constructors kan aanroepen, afhankelijk van de situatie.
Hieronder volgt het codefragment om het bovenstaande concept uit te leggen:
voorbeeld 1
Java
hoe een geheel getal naar een string Java te converteren
// 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();> >}> }> |
>
>Uitvoer
Person class Constructor Student class Constructor>
In het bovenstaande voorbeeld hebben we de superklasse-constructor aangeroepen met het trefwoord ‘super’ via de subklasse-constructor.
Voorbeeld 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);> >}> }> |
>
>Uitvoer
false>
Voordelen van het gebruik van Java Super Keyword
De supertrefwoord in Java biedt veel voordelen bij objectgeoriënteerd programmeren zijn als volgt:
- Maakt hergebruik van code mogelijk : Door het trefwoord super te gebruiken, kunnen subklassen functionaliteit overnemen van hun bovenliggende klassen, wat het hergebruik van code bevordert en duplicatie vermindert.
- Ondersteunt polymorfisme : Omdat subklassen methoden kunnen overschrijven en toegang kunnen krijgen tot velden van hun bovenliggende klassen met behulp van super, is polymorfisme mogelijk. Dit maakt flexibelere en uitbreidbare code mogelijk.
- Biedt toegang tot het gedrag van de ouderklasse : Subklassen hebben toegang tot en kunnen methoden en velden gebruiken die in hun bovenliggende klassen zijn gedefinieerd via het trefwoord super, waardoor ze kunnen profiteren van bestaand gedrag zonder dit opnieuw te hoeven implementeren.
- Maakt aanpassing van gedrag mogelijk: Door methoden te overschrijven en super te gebruiken om de bovenliggende implementatie aan te roepen, kunnen subklassen het gedrag van hun bovenliggende klassen aanpassen en uitbreiden.
- Vergemakkelijkt abstractie en inkapseling: Het gebruik van super bevordert inkapseling en abstractie door subklassen de mogelijkheid te geven zich op hun gedrag te concentreren, terwijl ze erop vertrouwen dat de bovenliggende klasse de details op een lager niveau afhandelt.
Over het algemeen is het superzoekwoord een belangrijk kenmerk van erfenis En polymorfisme in Java, en het biedt verschillende voordelen voor ontwikkelaars die herbruikbare, uitbreidbare en goed georganiseerde code willen schrijven.
Belangrijke punten om te onthouden bij het gebruik van Java Super Keyword
Hier zijn enkele belangrijke punten waar u op moet letten bij het gebruik van supertrefwoorden in Java:
- Aanroep naar super() moet de eerste instructie in de klasse Derived(Student) zijn bouwer want als je erover nadenkt, is het logisch dat de superklasse geen kennis heeft van welke subklasse dan ook, dus elke initialisatie die hij moet uitvoeren staat los van en is mogelijk een voorwaarde voor elke initialisatie die door de subklasse wordt uitgevoerd. Daarom moet het eerst de uitvoering ervan voltooien.
- Als een constructor niet expliciet een superklasseconstructor aanroept, voegt de Java-compiler automatisch een aanroep in naar de constructor zonder argumenten van de superklasse. Als de superklasse geen constructor zonder argumenten heeft, krijgt u een compileerfout. Het object doet hebben zo'n constructor, dus als het Object de enige superklasse is, is er geen probleem.

- Als een constructor van een subklasse een constructor van zijn superklasse aanroept, expliciet of impliciet, zou je kunnen denken dat er een hele keten van constructors wordt aangeroepen, helemaal terug naar de constructor van Object. Dit is in feite het geval. Het heet constructor-ketening .
Veelgestelde vragen – Java supertrefwoord
Q1. Wat is super () en super trefwoord in Java?
Super() is een Java-sleutelwoord dat wordt gebruikt om een superklasse-constructor aan te roepen. Super heeft toegang tot leden van superklassen en onderhoudt overervingshiërarchieën.
Vraag 2. Wat is de superklasse van Java?
De Objectklasse oftewel superklasse staat bovenaan de klassenhiërarchie Java's java.lang-pakket . Elke klasse, vooraf gedefinieerd of door de gebruiker gedefinieerd, is een subklasse van de Object-klasse.
Q3. Waarom is super belangrijk in Java?
super is essentieel in Java omdat het de toegang, initialisatie en het beheer van relaties tussen superklassen en subklassen vergemakkelijkt, waardoor herbruikbaarheid van code wordt bevorderd.