¿Qué significa y hace el método super en Java?

El método super() es un uso especial de la palabra clave super donde se llama un constructor principal sin parámetros. En general, la palabra clave super se puede utilizar para llamar a métodos anulados, acceder a propiedades ocultas o invocar al constructor de una superclase.

Si tu método anula uno de los métodos de la superclase, se puede invocar el método anulado mediante el uso de la palabra clave super.

Ejemplo 1

Echa un vistazo a este ejemplo, usaremos el método super y enviaremos parámetros a través del constructor:

class Animal {
    public Animal(String arg) {
        System.out.println("Construyendo un animal: " + arg);
    }
}

class Cat extends Animal {
    public Cat() {
        super("This is from cat constructor");
        System.out.println("Construyendo un gato.");
    }
}

public class Test {
    public static void main(String[] a) {
        new Cat();
    }
}

La salida generada por la clase sería:

Constructing an animal: This is from cat constructor 
Constructing a dog.

La función cat se inicializa, luego se ejecuta el súper método e invoca a Animal primero y finalmente imprime la línea "Construyendo un gato".

Ejemplo 2

Ahora echale un vistazo al siguiente ejemplo, usaremos la palabra clave super para invocar directamente un método de la clase principal:

class Base
{
    int a = 100;
    void Show()
    {
        System.out.println(a);
    }
}

class Son extends Base
{
    int a = 200;
    void Show()
    {
        // Llamar método Show desde una clase base
        super.Show();
        System.out.println(a);
    }
    public static void Main(String[] args)
    {
        new Son().Show();
    }
}

La salida generada por la clase sería:

100
200

Ejecutaremos el método Show desde la clase Son, y dentro del método Show de la clase son ejecutaremos el método show de la clase Base usando super.Show.

Notas

Siempre que estemos usando cualquiera super() o super(argumentos) en los constructores de clase derivados, el método super siempre debe ser la primera instrucción ejecutable en el cuerpo del constructor de la clase derivada, de lo contrario obtendremos un error durante la compilación (Call to super must be the first statement in the constructor ó la llamada a super debe ser la primera instrucción en el constructor ).

Esto podría ser de tu interes

Conviertete en un programador más sociable