logo

Diferència entre això i super a Java

El 'això' i la ' super' Les paraules clau són paraules reservades que s'utilitzen en un context diferent. A més d'això, Java també ofereix això () i super() constructors que s'utilitzen en el context del constructor. En aquesta secció, parlarem de diferències entre aquesta i la súper paraula clau i constructor this() i super(), en Java.

super paraula clau i super() constructor

súper paraula clau

Una paraula clau reservada que s'utilitza per cridar el mètode o la variable de classe base es coneix com a súper paraula clau. No podem utilitzar el súper paraula clau com a identificador . La paraula clau super no només s'utilitza per referir-se a la instància de la classe base, sinó també per a membres estàtics.

super() Constructor

El super() s'utilitza principalment per invocar funcions i constructors dels membres de la classe base.

Posem un exemple de tots dos súper paraula clau i super() per entendre com funcionen.

història en java

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

Sortida:

ciutats a Austràlia
això vs super a Java

En el mètode main(), hem fet una declaració nou SuperExample1() . Crida al constructor del SuperExample1 classe.

Dins del constructor, hem fet declaració super() que crida al constructor de la seva classe pare, és a dir, Gat. En el constructor, hem fet tres declaracions:

  1. Inicialitzar el color amb valor 'Marró'.
  2. Imprimeix el membre de dades de la classe pare.
  3. Imprimeix el membre actual de les dades de la classe.

Quan s'executa la segona instrucció, el flux del programa salta a la classe Animal per accedir al valor dels seus membres de dades. Després d'accedir-hi, el flux torna al Gat constructor de classes i l'imprimeix. Després d'això, l'última instrucció executa i imprimeix el valor de les variables de la classe actual.

Després de l'execució de l'última declaració de la Gat classe, el flux torna al constructor de classe SuperExample1 i executa la resta de declaracions.

Després de completar l'execució de la SuperExample1() , el flux torna al mètode main() i executa les sentències restants.

exemples d'arbres binaris

Nota: per utilitzar el super(), ens hem d'assegurar que hauria de ser la primera instrucció del constructor d'una classe. El podem utilitzar per fer referència només al constructor de classe pare.

aquesta paraula clau i aquest constructor ().

aquesta paraula clau

És una paraula clau reservada en Java que s'utilitza per fer referència a l'objecte de classe actual. És una variable de referència a través de la qual s'anomena el mètode. Altres usos d'aquesta paraula clau són:

  • El podem utilitzar per fer referència a la variable d'instància de classe actual.
  • El podem utilitzar per invocar el mètode de classe actual (implícitament).
  • Podem passar-lo com a argument a les trucades de mètode i constructor.
  • També el podem utilitzar per retornar la instància de classe actual del mètode.

this() Constructor

El constructor s'utilitza per cridar un constructor des de l'altre de la mateixa classe. Posem un exemple de tots dos això paraula clau i això () per entendre com funcionen.

python o

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

Sortida:

això vs super a Java

Diferència entre aquesta i súper paraula clau

La taula següent descriu la diferència clau entre això i super:

això súper
La instància actual de la classe es representa amb aquesta paraula clau. La instància actual de la classe pare es representa amb la paraula clau super.
Per trucar al constructor predeterminat de la classe actual, podem utilitzar aquesta paraula clau. Per trucar al constructor predeterminat de la classe pare, podem utilitzar la paraula clau super.
Es pot referir-hi des d'un context estàtic. Significa que es pot invocar des del context estàtic. No es pot referir-hi des d'un context estàtic. Vol dir que no es pot invocar des d'un context estàtic.
El podem utilitzar per accedir només als membres de dades de classe actuals i a les funcions dels membres. El podem utilitzar per accedir als membres de dades i a les funcions dels membres de la classe pare.

Diferència entre aquest() i super() Constructor

això () super()
El constructor this() fa referència a l'objecte de classe actual. El constructor super() fa referència a l'objecte de classe pare immediat.
S'utilitza per invocar el mètode de classe actual. S'utilitza per invocar mètodes de classe pare.
Es pot utilitzar a qualsevol part del constructor parametritzat. Sempre és la primera línia del constructor de classe fill.
S'utilitza per invocar una versió de superclasse d'un mètode anul·lat. S'utilitza per invocar una versió de superclasse d'un mètode anul·lat.