logo

Súper palabra clave en Java

El súper palabra clave en Java es una variable de referencia que se usa para hacer referencia a la clase principal cuando trabajamos con objetos. Necesitas conocer los conceptos básicos de Herencia y Polimorfismo para comprender la súper palabra clave de Java.

La palabra clave súper entró en escena con el concepto de herencia. En este artículo, cubriremos todo sobre super en Java, incluidas definiciones, ejemplos, usos, sintaxis y más.

Tabla de contenidos



Características de la súper palabra clave en Java

En Java, la palabra clave super se utiliza para hacer referencia a la clase principal de una subclase. Estas son algunas de sus características clave:

  • super se usa para llamar a un constructor de superclase: Cuando se crea una subclase, su constructor debe llamar al constructor de su clase padre. Esto se hace usando la palabra clave super(), que llama al constructor de la clase principal.
  • super se usa para llamar a un método de superclase: Una subclase puede llamar a un método definido en su clase principal usando la palabra clave super. Esto es útil cuando la subclase quiere invocar la implementación del método de la clase principal además de la suya propia.
  • super se utiliza para acceder a un campo de superclase: Una subclase puede acceder a un campo definido en su clase principal utilizando la palabra clave super. Esto es útil cuando la subclase quiere hacer referencia a la versión de un campo de la clase principal.
  • super debe ser la primera declaración en un constructor: Al llamar a un constructor de superclase, la declaración super() debe ser la primera declaración en el constructor de la subclase.
  • super no se puede utilizar en un contexto estático: La palabra clave super no se puede utilizar en un contexto estático, como en un método estático o un inicializador de variable estática.
  • super no es necesario para llamar a un método de superclase: Si bien es posible utilizar la palabra clave super para llamar a un método en la clase principal, no es necesario. Si un método no se anula en la subclase, llamarlo sin la palabra clave super invocará la implementación de la clase principal.

En general, el súper palabra clave es una poderosa herramienta para crear subclases en Java, permitiendo que las subclases hereden y desarrollen la funcionalidad de sus clases principales.

Uso de super palabra clave en Java

Se utiliza principalmente en los siguientes contextos, como se menciona a continuación:

  • Uso de super con Variables
  • Uso de super con métodos
  • Uso de super con Constructores

1. Uso de super con Variables

Este escenario ocurre cuando una clase derivada y una clase base tienen los mismos miembros de datos. En ese caso, existe la posibilidad de ambigüedad en el JVM .

Podemos entenderlo más claramente usando el siguiente ejemplo:

Ejemplo

Java




// super keyword in java example> > // Base class vehicle> class> Vehicle {> >int> maxSpeed =>120>;> }> > // sub class Car extending vehicle> class> Car>extends> Vehicle {> >int> maxSpeed =>180>;> > >void> display()> >{> >// print maxSpeed of base class (vehicle)> >System.out.println(>'Maximum Speed: '> >+>super>.maxSpeed);> >}> }> > // Driver Program> class> Test {> >public> static> void> main(String[] args)> >{> >Car small =>new> Car();> >small.display();> >}> }>

>

>

Producción

Maximum Speed: 120>

En el ejemplo anterior, tanto la clase base como la subclase tienen un miembro maxSpeed. Podríamos acceder a maxSpeed ​​de la clase base en la subclase usando super palabra clave.

2. Uso de super con métodos.

Esto se usa cuando queremos llamar a la clase padre. método . Entonces, siempre que una clase principal y una clase secundaria tengan métodos con el mismo nombre, para resolver la ambigüedad usamos la palabra clave super.

Este fragmento de código ayuda a comprender dicho uso de la palabra clave super.

Ejemplo

Java




// super keyword in java example> > // superclass Person> class> Person {> >void> message()> >{> >System.out.println(>'This is person class '>);> >}> }> // Subclass Student> class> Student>extends> Person {> >void> message()> >{> >System.out.println(>'This is student class'>);> >}> >// Note that display() is> >// only in Student class> >void> display()> >{> >// will invoke or call current> >// class message() method> >message();> > >// will invoke or call parent> >// class message() method> >super>.message();> >}> }> // Driver Program> class> Test {> >public> static> void> main(String args[])> >{> >Student s =>new> Student();> > >// calling display() of Student> >s.display();> >}> }>

>

>

Producción

This is student class This is person class>

En el ejemplo anterior, hemos visto que si solo llamamos al método mensaje() luego, se invoca la clase actual message() pero con el uso de la palabra clave super, mensaje() También se podría invocar la superclase.

3. Uso de super con constructores

La palabra clave super también se puede utilizar para acceder al constructor de la clase principal. Una cosa más importante es que 'super' puede llamar a constructores tanto paramétricos como no paramétricos según la situación.

A continuación se muestra el fragmento de código para explicar el concepto anterior:

Ejemplo 1

Java


matriz de retorno de Java



// Java Code to show use of> // super keyword with constructor> > // superclass Person> class> Person {> >Person()> >{> >System.out.println(>'Person class Constructor'>);> >}> }> > // subclass Student extending the Person class> class> Student>extends> Person {> >Student()> >{> >// invoke or call parent class constructor> >super>();> > >System.out.println(>'Student class Constructor'>);> >}> }> > // Driver Program> class> Test {> >public> static> void> main(String[] args)> >{> >Student s =>new> Student();> >}> }>

>

>

Producción

Person class Constructor Student class Constructor>

En el ejemplo anterior, hemos llamado al constructor de la superclase usando la palabra clave 'super' a través del constructor de la subclase.

Ejemplo 2

Java




class> ParentClass {> >public> boolean> isTrue() {>return> true>; }> }> > class> ChildClass>extends> ParentClass {> >public> boolean> isTrue()> >{> >// calls parent implementation of isTrue()> >boolean> parentResult =>super>.isTrue();> >// negates the parent result> >return> !parentResult;> >}> }> > public> class> Main {> >public> static> void> main(String[] args)> >{> >ChildClass child =>new> ChildClass();> >// calls child implementation> >// of isTrue()> >boolean> result = child.isTrue();> > >// prints 'false'> >System.out.println(result);> >}> }>

>

>

Producción

false>

Ventajas de utilizar la súper palabra clave de Java

El súper palabra clave en Java Proporciona muchas ventajas en la programación orientada a objetos son las siguientes:

  • Permite la reutilización del código. : El uso de la palabra clave super permite que las subclases hereden la funcionalidad de sus clases principales, lo que promueve la reutilización de código y reduce la duplicación.
  • Soporta polimorfismo : Debido a que las subclases pueden anular métodos y acceder a campos de sus clases principales usando super, el polimorfismo es posible. Esto permite un código más flexible y extensible.
  • Proporciona acceso al comportamiento de la clase principal. : Las subclases pueden acceder y utilizar métodos y campos definidos en sus clases principales a través de la palabra clave super, lo que les permite aprovechar el comportamiento existente sin tener que volver a implementarlo.
  • Permite personalizar el comportamiento: Al anular métodos y usar super para llamar a la implementación principal, las subclases pueden personalizar y ampliar el comportamiento de sus clases principales.
  • Facilita la abstracción y la encapsulación: El uso de super promueve la encapsulación y la abstracción al permitir que las subclases se centren en su comportamiento mientras dependen de la clase principal para manejar los detalles de nivel inferior.

En general, la súper palabra clave es una característica clave de herencia y polimorfismo en Java y proporciona varios beneficios para los desarrolladores que buscan escribir código reutilizable, extensible y bien organizado.

Puntos importantes para recordar al utilizar la súper palabra clave de Java

Aquí hay algunos puntos importantes que debe tener en cuenta al usar súper palabras clave en Java:

  • La llamada a super() debe ser la primera declaración en la clase derivada (estudiante) constructor porque si lo piensas bien, tiene sentido que la superclase no tenga conocimiento de ninguna subclase, por lo que cualquier inicialización que necesite realizar es independiente y posiblemente un requisito previo para cualquier inicialización realizada por la subclase. Por lo tanto, primero debe completar su ejecución.
  • Si un constructor no invoca explícitamente un constructor de superclase, el compilador de Java inserta automáticamente una llamada al constructor sin argumentos de la superclase. Si la superclase no tiene un constructor sin argumentos, obtendrá un error en tiempo de compilación. El objeto hace tiene tal constructor, por lo que si el Objeto es la única superclase, no hay problema.

súper palabra clave en Java

  • Si un constructor de subclase invoca un constructor de su superclase, ya sea explícita o implícitamente, se podría pensar que se llama a toda una cadena de constructores, hasta el constructor de Objeto. Éste, de hecho, es el caso. Se llama encadenamiento de constructores .

Preguntas frecuentes: súper palabra clave de Java

P1. ¿Qué es super () y super palabra clave en Java?

Súper() es una palabra clave de Java utilizada para llamar a un constructor de superclase. Super accede a miembros de la superclase y mantiene jerarquías de herencia.

P2. ¿Cuál es la superclase de Java?

El Clase de objeto también conocida como superclase está en la cima de la jerarquía de clases en Paquete java.lang de Java . Cada clase, ya sea predefinida o definida por el usuario, es una subclase de la clase Objeto.

P3. ¿Por qué es súper importante en Java?

super es esencial en Java ya que facilita el acceso, la inicialización y la gestión de las relaciones entre superclases y subclases, promoviendo así la reutilización del código.