Belangrijk verschil - dit versus super in Java
De trefwoorden 'this' en 'super' worden gebruikt in Java-programmering. Deze trefwoorden kunnen niet worden gebruikt als variabelen of een andere identificatienaam. Java ondersteunt Object Oriented Programming (OOP). Het programma of de software kan worden gemodelleerd met behulp van objecten. Objecten zijn onverzadigbaar met klassen. Een van de pijlers van OOP is overerving. Het biedt herbruikbaarheid van code. De klassen die al bestaan zijn superklassen en de afgeleide klassen zijn subklassen. Het sleutelwoord super kan worden gebruikt om naar een object van de superklasse te verwijzen. Er zijn meerdere objecten in het systeem. Het sleutelwoord 'this' wordt gebruikt om naar een huidig object te verwijzen. Het belangrijkste verschil tussen dit en super is dat 'this' een referentievariabele is die wordt gebruikt om naar het huidige object te verwijzen, terwijl 'super' een referentievariabele is die wordt gebruikt om naar een onmiddellijk superklasse-object te verwijzen.
Wat is dit in Java?
Het trefwoord 'this' wordt gebruikt om naar een huidig object te verwijzen. Raadpleeg het gegeven Java-programma.
Figuur 01: Java-programma dat dit trefwoord gebruikt
In Java zijn er drie soorten variabelen. Het zijn instantievariabelen, lokale variabelen en klassevariabelen. Volgens het bovenstaande programma heeft klasse Werknemer twee instantievariabelen. Ze zijn id en naam. Lokale variabelen zijn de variabelen die bij methoden horen. Klassevariabelen worden gedeeld door alle objecten. De id en naam worden doorgegeven aan de constructor van de werknemer. Als de programmeur id=id schrijft; het zal de instantievariabelen niet initialiseren omdat de constructor al een id en naam heeft. Er zijn geen waarden voor bijvoorbeeld variabelen. Dus als u ze afdrukt, wordt null weergegeven. Bij gebruik hiervan verwijst het naar het huidige object. Daarom kan het geven van id en naam aan de constructor de instantievariabelen instellen.
Het sleutelwoord 'this' kan worden gebruikt om de huidige klassenmethode aan te roepen. Raadpleeg het gegeven Java-programma.
openbare les ThisDemo{
public static void main(String args){
Mijnklasse mijnKlasse=nieuwe Mijnklasse();
mijnKlasse. B();
}
}
class Mijnklas{
openbare leegte A(){
Systeem.uit.println(“A”);
}
public void B(){
System.out.prinltn(“B”);
this. A();
}
}
De klasse Mijnklasse bevat twee methoden. Dit zijn methode A en B. Bij het maken van een object van Myclass en het aanroepen van de methode B zal B, A als uitvoer worden afgedrukt. In methode B is er na het afdrukken van B een statement als this. A(). Hiermee werd de huidige klassenmethode aangeroepen.
Het is ook mogelijk om dit sleutelwoord te gebruiken om de huidige klassenconstructor aan te roepen. Raadpleeg het gegeven programma.
openbare les ThisDemo{
public static void main(String args){
A obj=nieuwe A(5);
}
}
klasse A{
public A(){
System.out.println(“Constructor A”);
}
public A(int x){
this();
System.out.println(“Geparameteriseerde Constructor A”);
}
}
Volgens het bovenstaande programma heeft klasse A een standaardconstructor en een constructor met parameters. Bij het maken van een object van A wordt de geparametriseerde constructor aangeroepen. In de geparametriseerde constructor is er een instructie zoals deze(); Het zal de huidige klassenconstructor aanroepen die A() is.
Wat is super in Java?
Het trefwoord 'super' is gerelateerd aan overerving. Overerving is een belangrijk concept van objectgeoriënteerd programmeren. Hiermee kunnen de eigenschappen en methoden van de reeds bestaande klasse worden gebruikt voor een nieuwe klasse. De reeds bestaande klasse staat bekend als de bovenliggende klasse of superklasse. De nieuwe klasse staat bekend als de onderliggende klasse of subklasse.
De 'super' is een referentievariabele die wordt gebruikt om naar het directe bovenliggende klasseobject te verwijzen. Het sleutelwoord super kan verwijzen naar de instantievariabele van de directe bovenliggende klasse of de methode van de directe bovenliggende klasse aanroepen. De super() wordt gebruikt om de constructor van de onmiddellijke bovenliggende klasse aan te roepen.
Veronderstel dat er twee klassen zijn als A en B. Klasse A is de superklasse en klasse B is de subklasse. Klasse A en B hebben beide een weergavemethode.
publieke klasse A{
public void display(){
Systeem.uit.println(“A”);
}
}
publieke klasse B breidt A uit{
public void display(){
Systeem.uit.println(“B”);
}
}
Bij het maken van een object van het type B en het aanroepen van de methode display, zal dit de output B geven. klasse A heeft de display methode, maar deze wordt overschreven door de subklasse B display methode. Als de programmeur de weergavemethode in klasse A wil aanroepen, kan hij het super-trefwoord gebruiken. Raadpleeg het gegeven Java-programma.
Figuur 02: Java-programma met super trefwoord
Volgens het bovenstaande programma heeft klasse A een variabele met de naam getal met waarde 10. Klasse B breidt A uit en heeft een variabele met de naam getal met waarde 20. Over het algemeen, bij het maken van een object van het type B en het aanroepen van de weergavemethode moet het nummer in de subklasse geven omdat de superklassewaarde wordt overschreven door de nieuwe klasse. Door super.num te gebruiken, wordt de getalwaarde van de superklasse afgedrukt.
De super() kan worden gebruikt om de constructor van de superklasse aan te roepen. Raadpleeg het onderstaande programma.
publieke klas Hoofd {
public static void main(String args){
B obj=nieuwe B();
}
}
klasse A{
A(){
Systeem.uit.println(“A”);
}
}
klasse B breidt A uit{
B(){
super();
Systeem.uit.println(“B”);
}
}
Volgens het bovenstaande programma heeft klasse A een constructor A (). Klasse B heeft de constructor B (). Klasse B breidt klasse A uit. Wanneer een object van type B wordt gemaakt, wordt A, B als uitvoer afgedrukt. De B () constructor heeft super (). Daarom wordt eerst de A-constructor aangeroepen en gaat vervolgens naar B. Hoewel super () niet is geschreven, wordt standaard de bovenliggende constructor aangeroepen.
De super die de methode gebruikt is als volgt.
Figuur 03: Java-programma dat de superklassemethode aanroept
Volgens het bovenstaande programma heeft klasse A een weergavemethode. Klasse B heeft ook een weergavemethode. Klasse B breidt A uit. Bij het maken van een object van het type B en het aanroepen van de weergavemethode zal uitvoer worden gegeven als A en B. In de weergavemethode van klasse B wordt de weergavemethode van klasse A aangeroepen met behulp van super.display(). Die methode drukt eerst "A" af. Drukt vervolgens “B” af.
Wat is de overeenkomst tussen dit en super?
Beide zijn sleutelwoorden in Java-programmering
Wat is het verschil tussen dit en super?
Dit vs Super |
|
De 'this' is een referentievariabele die wordt gebruikt om naar het huidige object te verwijzen. | De ‘super’ is een referentievariabele die wordt gebruikt om naar een direct superklasse-object te verwijzen. |
Instantievariabele | |
Een huidige klasse instantievariabele kan hiermee worden verwezen. | Superclass instantievariabele kan worden verwezen met super. |
Klasmethode | |
De huidige klassenmethode kan hiermee worden aangeroepen. | Superclass-methode kan worden aangeroepen met super. |
Constructeur | |
De huidige klassenconstructor kan worden aangeroepen met deze(). | Superclass-constructor kan worden aangeroepen met super(). |
Samenvatting – dit vs super in Java
De trefwoorden 'this' en 'super' worden in Java gebruikt. De trefwoorden kunnen niet worden gebruikt als variabelen of een andere identificatienaam. Ze lijken hetzelfde, maar ze hebben een verschil. Het verschil tussen dit en super is dat super een referentievariabele is die wordt gebruikt om naar een onmiddellijk superklasse-object te verwijzen, terwijl dit een referentievariabele is die naar het huidige object verwijst.
Download de PDF van dit vs super in Java
U kunt de PDF-versie van dit artikel downloaden en gebruiken voor offline doeleinden volgens de citatienota. Download de PDF-versie hier: Verschil tussen dit en super in Java