¿Cómo utilizar el método super en Java?

Icono play
Java
El método super

Métodos, constructores, clases, palabras reservadas, etc. Java nos tiene acostumbrados a disponer de muchas herramientas útiles a la hora de programar nuestros proyectos.

Hoy te contamos de qué va la palabra clave super.

Habrás notado que en el título se hace referencia al “_método super_” y no a una palabra reservada en sí, esto puede resultar confuso.

La palabra reservada super acompañada del nombre del método al que quiere invocar, tiene un uso especial y es el método super().

¿Qué es y qué hace el método super() en Java?

Esta palabra super se utiliza en el lenguaje Java para invocar al método constructor de una clase superior (clase padre) de la cual queremos utilizar el mismo tipo de parametrización, entonces esta palabrita sube de categoría y pasa a ser el método super().

El método super nos permite reutilizar bloques de código sin tener que volver a escribir lo mismo, invocando al constructor de una clase superior, desde una clase hija y hacia una clase padre.

Cuando queremos acceder a los atributos y/o métodos de una clase superior, utilizamos la herencia (una clase hija “hereda” de una clase padre sus atributos y métodos), y creamos una nueva clase que es extendida de la clase principal, cuya primera línea del constructor debe ser siempre el método super().

Es muy importante el uso del método super(), ya que así evitamos la ambigüedad que puede generarle a la JVM (Java Virtual Machine) que una clase derivada y una clase base utilicen un método con el mismo nombre pero con distinta funcionalidad.

Así como con la palabra this, hacemos referencia a la instancia actual de un objeto, con la palabra super hacemos referencia a su clase padre. 

Además podemos usar la palabra super para inicializar atributos de la clase superior de la que se extiende con la palabra extends.

Las clases hijas pueden sobreescribir métodos de las clases padre y luego invocarlos con la cláusula super.

Ejemplo de método super en Java

package com.opus4;

public class Mascota {// clase padre
   public void sonidoMascota() {//método de la clase padre sin parámetros
       System.out.println("Qué tipo de sonido hace la mascota");
   }

// Una clase hija llamando a través del método super al método de la clase padre   
static class Gato extends Mascota { // clase hija
       public void sonidoMascota() {
              super.sonidoMascota(); 
           System.out.println("El Gato dice miauuuu");
       }
   }
// Otra clase hija llamando a través del método super al método de la clase padre

    static class Perro extends Mascota { 
        public void sonidoMascota() {
            super.sonidoMascota(); 
            System.out.println("El Perro dice guaauu");
        }
    }
           public static void main(String[] args) {
               Mascota gato = new Gato(); // instanciamos un objeto
               Mascota perro = new Perro(); //instanciamos otro objeto
               gato.sonidoMascota();
              perro.sonidoMascota();
           }
}

Como podemos ver con el método super() podemos acceder a las propiedades de una superclase o llamar a un constructor principal que no tiene parámetros.

Este proceso lo podemos realizar por medio de la sobrecarga del método al invocar, creando un nuevo constructor que reciba los parámetros del constructor superior si los tuviera.

La sobrecarga en Java consiste en duplicar un método con el mismo nombre, pero que entregue un resultado diferente al definido.

La sintaxis del método super() consiste en poner la palabra super seguida de un punto <.> y luego colocamos el nombre del método de la clase padre, como vimos en el ejemplo.

Así super.sonidoMascota() de esta forma podemos utilizar el método principal en las clases derivadas que precisemos.

¿Todavía no te has apuntado a nuestro Bootcamp?
Tenemos muchos cursos para ofrecerte y ¡TOTALMENTE GRATIS! Estos son algunos de ellos: