Saltar a contenido

Acceso a la superclase

Herencia

Las dudas con los constructores aparecen ligadas a las jerarquías de clases y a la palabra super(). Supongamos que tenemos la jerarquía de la derecha.

Como podemos ver todos los constructores llaman por defecto al constructor de la clase superior a través de una llamada a super() (en este caso al constructor por defecto). Esto es debido a que los constructores no se heredan entre jerarquías de clases. Por lo tanto la palabra super() siempre es la primera línea de un constructor e invoca al constructor de la clase superior que comparta el mismo tipo de parametrización.

Aunque nosotros no pongamos la palabra super() esta siempre será añadida salvo que nosotros la añadamos. Por ejemplo si nuestros constructores tienen parámetros las clausulas super que deberemos construir serán las siguientes entre Persona y Deportista para que el código compile:

public class Persona {
    private String nombre;

    public Persona(String nombre) {
        super();
        this.nombre = nombre;
    }
    public String getNombre() {
        return nombre;
    }
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }
}
public class Deportista extends Persona{
    public Deportista(String nombre) {
        super(nombre);
    }
}

Ya que sino el compilador añadirá super() por defecto y el código no compilará al carecer la clase Persona de un constructor por defecto( ya que tiene el constructror parametrizado).