logo

Verschil tussen dit en super in Java

De 'dit' en de ' super' trefwoorden zijn gereserveerde woorden die in een andere context worden gebruikt. Daarnaast biedt Java ook dit() En super() constructors die in de constructorcontext worden gebruikt. In deze sectie bespreken we de verschillen tussen dit en het superzoekwoord En deze() en super() constructor, op Java.

super trefwoord en super() constructor

supertrefwoord

Een gereserveerd sleutelwoord dat wordt gebruikt om de basisklassemethode of -variabele aan te roepen, staat bekend als a super trefwoord. Wij kunnen geen gebruik maken van de super trefwoord als een identificatie . Het super trefwoord wordt niet alleen gebruikt om naar de basisklasse-instantie te verwijzen, maar ook naar statische leden.

Java-reeks van array

super()-constructeur

De super() wordt voornamelijk gebruikt voor het aanroepen van functies en constructors van leden van de basisklasse.

Laten we een voorbeeld nemen van beide super trefwoord en super() om te begrijpen hoe ze werken.

SuperVoorbeeld1.java

 // import required classes and packages package javaTpoint.MicrosoftJava; // create Animal class which is base class of Animal class Animal{ // data member of Animal class String color = 'white'; } // create child class of Animal class Cat extends Animal{ //default constructor Cat() { // data members of the Cat class String color = 'Brown'; System.out.println('The cat is of color '+super.color); // calling parent class data member System.out.println('The cat is of color '+color); } } // create child class for Car class SuperExample1 extendsCat { // default constructor SuperExample1() { // calling base class constructor super(); System.out.println('The eyes of the cat is blue.'); } // main() method start publicstaticvoid main(String[] args) { // call default constructor of the SuperExample1 new SuperExample1(); System.out.println('Inside Main'); } } 

Uitgang:

dit versus super in Java

In de methode main() hebben we een statement gemaakt nieuwe SuperVoorbeeld1() . Het roept de constructeur van de SuperVoorbeeld1 klas.

Binnen de constructor hebben we een verklaring afgelegd super() die de constructor van zijn ouderklasse aanroept, dat wil zeggen, Kat. In de constructor hebben we drie uitspraken gedaan:

  1. Initialiseer kleur met waarde 'Bruin'.
  2. Gegevenslid van bovenliggende klasse afdrukken.
  3. Huidig ​​klasgegevenslid afdrukken.

Wanneer de tweede instructie wordt uitgevoerd, springt de stroom van het programma naar de klasse Animal om toegang te krijgen tot de waarde van de gegevensleden. Nadat u er toegang toe hebt gekregen, keert de stroom terug naar de Kat klasseconstructor en drukt deze af. Daarna wordt de laatste instructie uitgevoerd en wordt de waarde van de variabelen van de huidige klasse afgedrukt.

Na uitvoering van de laatste verklaring van de Kat klasse, de stroom keert terug naar de constructor van de klasse SuperVoorbeeld1 en voert de resterende instructies uit.

Na voltooiing van de uitvoering van de SuperVoorbeeld1() , keert de stroom terug naar de methode main() en voert de resterende instructies uit.

Opmerking: om super() te kunnen gebruiken, moeten we ervoor zorgen dat dit het eerste statement in de constructor van een klasse is. We kunnen het gebruiken om alleen naar de ouderklasseconstructor te verwijzen.

dit trefwoord en deze() constructor

dit trefwoord

Het is een gereserveerd sleutelwoord in Java dat wordt gebruikt om naar het huidige klasseobject te verwijzen. Het is een referentievariabele waarmee de methode wordt aangeroepen. Andere toepassingen van dit trefwoord zijn:

  • We kunnen het gebruiken om naar de huidige klasse-instantievariabele te verwijzen.
  • We kunnen het gebruiken om de huidige klassenmethode (impliciet) aan te roepen.
  • We kunnen het als argument doorgeven in de methode- en constructor-aanroepen.
  • We kunnen het ook gebruiken om de huidige klasse-instantie van de methode te retourneren.

deze() Constructor

De constructor wordt gebruikt om de ene constructor van de andere van dezelfde klasse aan te roepen. Laten we van beide een voorbeeld nemen dit trefwoord en dit() om te begrijpen hoe ze werken.

DitVoorbeeld1.java

 // import required classes and packages package javaTpoint.MicrosoftJava; // create ThisExample1 class to understand the working of this() and this class ThisExample1 { // initialize instance and static variable int x = 5; staticinty = 10; // default constructor of class ThisExample1 ThisExample1() { // invoking current class constructor this(5); System.out.println('We are insie of the default constructor.'); System.out.println('The value of x = '+x); } ThisExample1(int x) { this.x = x; // override value of the current class instance variable System.out.println('We are inside of the parameterized constructor.'); System.out.println('The value of y = '+y); } publicstaticvoid main(String[] args) { // invoking constructor of the current class new ThisExample1(); System.out.println('Inside Main'); } } 

Uitgang:

dit versus super in Java

Verschil tussen dit en superzoekwoord

De volgende tabel beschrijft het belangrijkste verschil tussen dit en super:

dit super
De huidige instantie van de klasse wordt weergegeven door dit trefwoord. Het huidige exemplaar van de bovenliggende klasse wordt weergegeven door het trefwoord super.
Om de standaardconstructor van de huidige klasse aan te roepen, kunnen we dit trefwoord gebruiken. Om de standaardconstructor van de bovenliggende klasse aan te roepen, kunnen we het sleutelwoord super gebruiken.
Er kan naar verwezen worden vanuit een statische context. Het betekent dat het kan worden aangeroepen vanuit de statische context. Er kan niet naar worden verwezen vanuit een statische context. Het betekent dat het niet vanuit een statische context kan worden aangeroepen.
We kunnen het gebruiken om alleen toegang te krijgen tot de huidige klassegegevensleden en lidfuncties. We kunnen het gebruiken om toegang te krijgen tot de gegevensleden en lidfuncties van de bovenliggende klasse.

Verschil tussen deze() en super() Constructor

dit() super()
De constructor this() verwijst naar het huidige klasseobject. De super()-constructor verwijst naar het directe bovenliggende klasseobject.
Het wordt gebruikt voor het aanroepen van de huidige klassenmethode. Het wordt gebruikt voor het aanroepen van ouderklassemethoden.
Het kan overal in de geparametriseerde constructor worden gebruikt. Het is altijd de eerste regel in de constructor van de onderliggende klasse.
Het wordt gebruikt voor het aanroepen van een superklasseversie van een overschreven methode. Het wordt gebruikt voor het aanroepen van een superklasseversie van een overschreven methode.