De super trefwoord in Java is een referentievariabele die wordt gebruikt om naar het directe bovenliggende klasseobject te verwijzen.
Telkens wanneer u de instantie van een subklasse maakt, wordt er impliciet een instantie van de bovenliggende klasse gemaakt waarnaar wordt verwezen door een superreferentievariabele.
Gebruik van Java-supertrefwoord
- super kan worden gebruikt om te verwijzen naar de directe instantievariabele van de ouderklasse.
- super kan worden gebruikt om de directe bovenliggende klassemethode aan te roepen.
- super() kan worden gebruikt om de directe ouderklasseconstructor aan te roepen.
1) super wordt gebruikt om te verwijzen naar de instantievariabele van de directe ouderklasse.
We kunnen het supertrefwoord gebruiken om toegang te krijgen tot het gegevenslid of het veld van de bovenliggende klasse. Het wordt gebruikt als de bovenliggende klasse en de onderliggende klasse dezelfde velden hebben.
hoe een geheel getal naar een string Java te converteren
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 het nu
Uitgang:
black white
In het bovenstaande voorbeeld hebben beide klassen Dier en Hond een gemeenschappelijke eigenschapskleur. Als we de kleureigenschap afdrukken, wordt standaard de kleur van de huidige klasse afgedrukt. Om toegang te krijgen tot de bovenliggende eigenschap, moeten we het superzoekwoord gebruiken.
2) super kan worden gebruikt om de ouderklassemethode aan te roepen
Het super trefwoord kan ook worden gebruikt om de bovenliggende klassemethode aan te roepen. Het moet worden gebruikt als de subklasse dezelfde methode bevat als de bovenliggende klasse. Met andere woorden, het wordt gebruikt als de methode wordt overschreven.
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 het nu
Uitgang:
eating... barking...
In het bovenstaande voorbeeld Animal en Dog hebben beide klassen de methode eat() als we de methode eat() uit de klasse Dog aanroepen, zal deze standaard de methode eat() van de klasse Dog aanroepen omdat prioriteit wordt gegeven aan lokaal.
Om de ouderklassemethode aan te roepen, moeten we het supertrefwoord gebruiken.
3) super wordt gebruikt om de constructor van de bovenliggende klasse aan te roepen.
Het super sleutelwoord kan ook worden gebruikt om de ouderklasseconstructor aan te roepen. Laten we een eenvoudig voorbeeld bekijken:
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 het nu
Uitgang:
animal is created dog is created
Opmerking: super() wordt automatisch door de compiler aan elke klassenconstructor toegevoegd als er geen super() of this() is.
Zoals we goed weten, wordt de standaardconstructor automatisch door de compiler geleverd als er geen constructor is. Maar het voegt ook super() toe als eerste statement.
Nog een voorbeeld van een super-trefwoord waarbij super() impliciet door de compiler wordt verstrekt.
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 het nu
Uitgang:
animal is created dog is created
supervoorbeeld: echt gebruik
Laten we eens kijken naar het echte gebruik van het superzoekwoord. Hier neemt de Emp-klasse de Person-klasse over, zodat alle eigenschappen van Person standaard worden overgenomen naar Emp. Om alle eigenschappen te initialiseren, gebruiken we de ouderklasseconstructor uit de kinderklasse. Op deze manier hergebruiken we de constructor van de ouderklasse.
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 het nu
Uitgang:
1 ankit 45000