logo

Diferencia entre esto y super en Java

El 'este' y el ' súper' Las palabras clave son palabras reservadas que se utilizan en un contexto diferente. Además de esto, Java también proporciona este() y súper() constructores que se utilizan en el contexto del constructor. En esta sección, discutiremos la diferencias entre esta y súper palabra clave y constructor this() y super(), en Java.

¿Cómo encuentro aplicaciones ocultas en Android?

superpalabra clave y constructor super()

súper palabra clave

Una palabra clave reservada utilizada para llamar al método o variable de la clase base se conoce como súper palabra clave. No podemos usar el súper palabra clave como identificador . La palabra clave super no solo se usa para hacer referencia a la instancia de la clase base sino también a los miembros estáticos.

super() Constructor

El súper() se utiliza principalmente para invocar constructores y funciones miembro de la clase base.

Tomemos un ejemplo tanto de súper palabra clave y súper() para entender cómo funcionan.

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

Producción:

esto vs super en Java

En el método main(), hemos hecho una declaración nuevo SuperEjemplo1() . Llama al constructor del SuperExample1 clase.

Dentro del constructor, hemos hecho una declaración. súper() que llama al constructor de su clase padre, es decir, Gato. En el constructor, hemos hecho tres declaraciones:

mecanografiado de bucle foreach
  1. Inicializar color con valor 'Marrón'.
  2. Imprimir miembro de datos de la clase principal.
  3. Imprime el miembro de datos de la clase actual.

Cuando se ejecuta la segunda declaración, el flujo del programa salta a la clase Animal para acceder al valor de sus miembros de datos. Después de acceder a él, el flujo vuelve al Gato constructor de clase y lo imprime. Después de eso, la última declaración se ejecuta e imprime el valor de las variables de la clase actual.

Después de la ejecución de la última declaración del Gato clase, el flujo vuelve al constructor de la clase SuperExample1 y ejecuta las declaraciones restantes.

corrimiento al rojo

Después de completar la ejecución del SuperExample1() , el flujo regresa al método main() y ejecuta las declaraciones restantes.

Nota: Para utilizar super(), debemos asegurarnos de que sea la primera declaración en el constructor de una clase. Podemos usarlo para referirnos solo al constructor de la clase principal.

esta palabra clave y este constructor ()

esta palabra clave

Es una palabra clave reservada en Java que se utiliza para hacer referencia al objeto de clase actual. Es una variable de referencia a través de la cual se llama al método. Otros usos de esta palabra clave son:

  • Podemos usarlo para hacer referencia a la variable de instancia de la clase actual.
  • Podemos usarlo para invocar el método de clase actual (implícitamente).
  • Podemos pasarlo como argumento en las llamadas al método y al constructor.
  • También podemos usarlo para devolver la instancia de clase actual del método.

este() Constructor

El constructor se utiliza para llamar a un constructor de otro de la misma clase. Tomemos un ejemplo de ambos. este palabra clave y este() para entender cómo funcionan.

interruptor mecanografiado

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

Producción:

esto vs super en Java

Diferencia entre esta y súper palabra clave

La siguiente tabla describe la diferencia clave entre esto y super:

este súper
La instancia actual de la clase está representada por esta palabra clave. La instancia actual de la clase principal está representada por la palabra clave super.
Para llamar al constructor predeterminado de la clase actual, podemos usar esta palabra clave. Para llamar al constructor predeterminado de la clase principal, podemos usar la palabra clave super.
Se puede hacer referencia a él desde un contexto estático. Significa que se puede invocar desde el contexto estático. No se puede hacer referencia a él desde un contexto estático. Significa que no se puede invocar desde un contexto estático.
Podemos usarlo para acceder solo a los miembros de datos de la clase actual y a las funciones miembro. Podemos usarlo para acceder a los miembros de datos y funciones miembro de la clase principal.

Diferencia entre el constructor this() y super()

este() súper()
El constructor this() se refiere al objeto de clase actual. El constructor super() hace referencia al objeto de clase principal inmediato.
Se utiliza para invocar el método de clase actual. Se utiliza para invocar métodos de clase principal.
Se puede utilizar en cualquier parte del constructor parametrizado. Siempre es la primera línea del constructor de la clase secundaria.
Se utiliza para invocar una versión de superclase de un método anulado. Se utiliza para invocar una versión de superclase de un método anulado.