logo

Unterschied zwischen diesem und Super in Java

Der 'Das' und das ' super' Schlüsselwörter sind reservierte Wörter, die in einem anderen Kontext verwendet werden. Darüber hinaus bietet Java auch Das() Und super() Konstruktoren, die im Konstruktorkontext verwendet werden. In diesem Abschnitt werden wir das besprechen Unterschiede zwischen diesem und dem Super-Schlüsselwort Und this() und super() Konstruktor, in Java.

super-Schlüsselwort und super()-Konstruktor

super Schlüsselwort

Ein reserviertes Schlüsselwort, das zum Aufrufen der Basisklassenmethode oder -variablen verwendet wird, wird als a bezeichnet super Stichwort. Wir können das nicht nutzen super Schlüsselwort als Identifikator . Das Schlüsselwort super wird nicht nur verwendet, um auf die Basisklasseninstanz zu verweisen, sondern auch auf statische Mitglieder.

super() Konstruktor

Der super() wird hauptsächlich zum Aufrufen von Mitgliedsfunktionen und Konstruktoren der Basisklasse verwendet.

Beispiele für Java-Code

Nehmen wir ein Beispiel für beides super Stichwort und super() um zu verstehen, wie sie funktionieren.

SuperExample1.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'); } } 

Ausgabe:

Dies vs Super in Java

In der Methode main() haben wir eine Aussage gemacht neues SuperExample1() . Es ruft den Konstruktor von auf SuperBeispiel1 Klasse.

Im Konstruktor haben wir eine Erklärung abgegeben super() welches den Konstruktor seiner Elternklasse aufruft, d.h. Katze. Im Konstruktor haben wir drei Anweisungen gemacht:

  1. Farbe mit Wert initialisieren 'Braun'.
  2. Gibt das Datenelement der übergeordneten Klasse aus.
  3. Aktuelles Klassendatenmitglied drucken.

Wenn die zweite Anweisung ausgeführt wird, springt der Programmfluss zur Klasse „Animal“, um auf den Wert ihrer Datenelemente zuzugreifen. Nach dem Zugriff kehrt der Fluss zum zurück Katze Klassenkonstruktor und druckt ihn aus. Danach wird die letzte Anweisung ausgeführt und der Wert der Variablen der aktuellen Klasse ausgegeben.

Nach Ausführung der letzten Anweisung des Katze Klasse, der Fluss kehrt zum Konstruktor der Klasse zurück SuperBeispiel1 und führt die restlichen Anweisungen aus.

Scanner scannen Java

Nach Abschluss der Ausführung des SuperExample1() , kehrt der Fluss zur main()-Methode zurück und führt die verbleibenden Anweisungen aus.

Hinweis: Um super() verwenden zu können, müssen wir sicherstellen, dass es sich um die erste Anweisung im Konstruktor einer Klasse handelt. Wir können damit nur auf den Konstruktor der übergeordneten Klasse verweisen.

this-Schlüsselwort und this()-Konstruktor

dieses Stichwort

Es handelt sich um ein reserviertes Schlüsselwort in Java, mit dem auf das aktuelle Klassenobjekt verwiesen wird. Es handelt sich um eine Referenzvariable, über die die Methode aufgerufen wird. Andere Verwendungen dieses Schlüsselworts sind:

  • Wir können es verwenden, um auf die aktuelle Klasseninstanzvariable zu verweisen.
  • Wir können es verwenden, um die aktuelle Klassenmethode (implizit) aufzurufen.
  • Wir können es als Argument in den Methoden- und Konstruktoraufrufen übergeben.
  • Wir können es auch verwenden, um die aktuelle Klasseninstanz von der Methode zurückzugeben.

this() Konstruktor

Der Konstruktor wird verwendet, um einen Konstruktor vom anderen derselben Klasse aufzurufen. Nehmen wir ein Beispiel für beides Das Stichwort und Das() um zu verstehen, wie sie funktionieren.

ThisExample1.java

Kontrollstrukturen Python
 // 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'); } } 

Ausgabe:

Dies vs Super in Java

Unterschied zwischen diesem und dem Super-Schlüsselwort

Die folgende Tabelle beschreibt den Hauptunterschied zwischen this und super:

Das super
Die aktuelle Instanz der Klasse wird durch dieses Schlüsselwort dargestellt. Die aktuelle Instanz der übergeordneten Klasse wird durch das Schlüsselwort super dargestellt.
Um den Standardkonstruktor der aktuellen Klasse aufzurufen, können wir dieses Schlüsselwort verwenden. Um den Standardkonstruktor der übergeordneten Klasse aufzurufen, können wir das Schlüsselwort super verwenden.
Es kann aus einem statischen Kontext referenziert werden. Das bedeutet, dass es aus dem statischen Kontext aufgerufen werden kann. Es kann nicht aus einem statischen Kontext heraus darauf verwiesen werden. Das bedeutet, dass es nicht aus einem statischen Kontext aufgerufen werden kann.
Wir können damit nur auf die aktuellen Klassendatenmember und Memberfunktionen zugreifen. Wir können damit auf die Datenelemente und Elementfunktionen der übergeordneten Klasse zugreifen.

Unterschied zwischen dem this()- und dem super()-Konstruktor

Das() super()
Der this()-Konstruktor verweist auf das aktuelle Klassenobjekt. Der super()-Konstruktor verweist auf das unmittelbar übergeordnete Klassenobjekt.
Es wird zum Aufrufen der aktuellen Klassenmethode verwendet. Es wird zum Aufrufen von Methoden übergeordneter Klassen verwendet.
Es kann überall im parametrisierten Konstruktor verwendet werden. Es ist immer die erste Zeile im Konstruktor der untergeordneten Klasse.
Es wird zum Aufrufen einer Superklassenversion einer überschriebenen Methode verwendet. Es wird zum Aufrufen einer Superklassenversion einer überschriebenen Methode verwendet.