Codificación aprenderaprogramar.com: CU00692B
USO DE SUPER PARA LLAMAR A MÉTODOS DE SUPERCLASE. EJEMPLO.
En apartados anteriores del curso hemos trabajando con herencia, polimorfismo y sobreescritura de métodos. Hemos usado como clases de ejemplo las clases Persona, Profesor, ProfesorInterino y ProfesorTitular, donde Profesor hereda de Persona y los profesores interino y titular de Profesor.
¿Cómo imprimir un listado con todos los profesores (titulares e interinos) y todos sus datos? En los métodos de Profesor solo tenemos disponibles los campos de Profesor, pero no los campos de ProfesorTitular o de ProfesorInterino. A su vez, ProfesorTitular (o ProfesorInterino) no conoce los campos de Profesor porque son privados, y no queremos hacerlos públicos para no romper el encapsulamiento (principio de ocultación) de la clase.
Hemos visto cómo en los constructores de subclases usábamos la sintaxis super() en la primera línea para invocar al constructor de la superclase. Veremos ahora que esta otra sintaxis: super.nombreDelMetodo(parámetros si los hay); tiene como efecto la invocación de un método de la superclase. Consideremos el ejemplo anterior. En el método mostrarDatos() de la clase ProfesorInterino escribimos lo siguiente:
//Ejemplo aprenderaprogramar.com public void mostrarDatos() { super.mostrarDatos(); System.out.println("Comienzo interinidad: " + FechaComienzoInterinidad.getTime().toString() ); } |
¿Qué hemos hecho? Dentro del método “hijo” hemos incluido una llamada al método “padre” que había perdido visibilidad debido a que lo habíamos sobreescrito. Al ejecutar el programa ahora obtenemos:
Se procede a mostrar los datos de los profesores existentes en el listín Datos Profesor. Profesor de nombre: Juan Hernández García con Id de profesor: Prof 22-387-11 Datos Profesor. Profesor de nombre: José Luis Morales Pérez con Id de profesor: Unknown Comienzo interinidad: Fri Nov 22 12:40:38 CET 2019 |
Gracias a la instrucción super.mostrarDatos() hemos incluido dentro de un método sobreescrito el método deseado de la superclase. La llamada a super dentro de un método puede ocurrir en cualquier lugar dentro del código. Equivale a la ejecución del método de la superclase y es opcional: la hacemos sólo cuando nos resulta necesaria o conveniente para poder acceder a un método sobreescrito.
EJERCICIO
Considera que estás desarrollando un programa Java donde trabajas con la superclase Profesor y la subclase ProfesorEmerito. Crea el código para estas clases que cumpla los requisitos que indicamos.
Como atributos de la superclase tendremos nombre (String), edad (int) y añosConsolidados (int). Un método de la superclase será double obtenerSalarioBase () que obtendrá el salario base como (725 + el número de años consolidados multiplicado por 33.25).
En la subclase se trabajará con el campo adicional añosEmerito. Queremos hacer lo siguiente: sobreescribir el método obtenerSalarioBase () en la subclase para calcular el salario base del profesor emérito invocando mediante la palabra clave super al cálculo del salario base de Profesor y añadiéndole la cantidad de (47.80 * añosEmerito).
Para comprobar si tu código es correcto puedes consultar en los foros aprenderaprogramar.com.
Para acceder a la información general sobre este curso y al listado completo de entregas pulsa en este link: Ver curso completo.
Para hacer un comentario o consulta utiliza los foros aprenderaprogramar.com, abiertos a cualquier persona independientemente de su nivel de conocimiento.