La subclase necesita normalmente que se ejecute el constructor de la superclase antes que su propio constructor para inicializar las variables de instancia heredadas. La solución consiste en utilizar la palabra reservada super seguida entre paréntesis de los parámetros correspondiente en el cuerpo del constructor de la subclase. Es decir, incluir la siguiente sentencia como primera línea de código:
De esta forma la implementación de un constructor de la clase descendiente sólo necesita inicializar directamente las variables de instancia no heredadas. Si no aparece como primera sentencia, el compilador inserta una llamada implícita super(); que inicializa las variables de instancia a cero, false, carácter nulo o null dependiendo de su tipo. Esta llamada en cadena a los constructores de las clases ascendientes llega hasta el origen de la jerarquía de clases, es decir, hasta el constructor de la clase Object.
En cualquier caso, la creación de una nueva instancia mediante un constructor debe tener tres fases:
- Llamada al constructor de la clase ascendiente.
- Se asignan valores a los atributos.
- Se ejecuta el resto del constructor.
La llamada al constructor de la super-clase debe ser la primera sentencia del constructor, excepto si se llama a otro constructor de la misma clase con this().