Otras lecciones del Curso de Java
¿Qué es IO en Java?
¿Cúales son los Operadores en Java?
¿Qué tipos de Variables hay en Java?
¿Cómo funciona Continue y Break en Java?
¿Cómo aplicar un Try Catch y Finally en Java?
¿Cómo trabajar con listas en Java?
¿Cuáles son los métodos de la clase String en Java?
¿Qué es un entorno de desarrollo en Java?
¿Qué es la Sobreescritura de métodos en Java?
¿Cómo utilizar un return en Java?
¿Cómo hacer un Hola Mundo en Java?
¿Cómo utilizar Throw y throws en Java?
¿Cómo hacer comentarios en Java?
¿Cuáles son las Palabras reservadas en Java?
Variables de entorno en Java
Características y estadísticas de Java e índice TIOBE
Estructura de proyecto, paquetes y clases en Java
Qué es una función en Java
¿Cómo funcionan las Funciones Java?
Operadores aritméticos en Java
Operadores de comparación en Java
Funciones anónimas en Java
Cómo invocar una función en Java
Atajos de teclado para IntelliJ
¿Qué es la Sobrecarga de funciones en Java?
Operadores lógicos en Java
Debug en Java
Como se crea una función en Java
¿Cómo crear Sentencias Switch en Java?
Bucles for en Java
¿Cómo hacer sentencias If e If else en Java?
¿Cómo funcionan los Bucles While en Java?
¿Qué son los objetos en Java?
¿Qué es el modificador static en Java y cómo se utiliza?
¿Qué es la herencia en Java?
¿Qué son los constructores en Java y cómo se utilizan?
¿Cómo crear clases en Java?
¿Qué es el Polimorfismo en Java?
¿Qué son las Clases Abstractas en Java?
¿Qué es la Programación genérica en Java?
¿Qué son las Interfaces de Java?
Implementación de una interface en Java
¿Cómo se hace refactoring en Java?
¿Cómo trabajar con Maps en Java?
¿Como funcionan los arrays en Java?
¿Cómo generar excepciones en Java?
¿Qué es la clase Scanner en Java?
Introducción a Swing en Java
¿Quieres descubrir más cosas como El método super en Java?¡Apuntate a nuestro campus y empieza a aprender con nosotros y con toda la comunidad!

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: