Skip to content

RA7 - CEb

< volver a actividades

Empaquetar actividades

Empaqueta las actividades, dentro de la carpeta ut08, en la carpeta actividades/ce7b.

Actividad 06

paquete: A06_preguntas2

Dada las siguientes definiciones de clases:

public class Persona {
    private String nombre;
    private int edad;

    public Persona (){
        this.nombre = "";
        this.edad = 0;
    }

    public Persona(String n, int e){
        this.nombre = n;
        this.edad = e;
    }

    public String toString(){
        return "Nombre: " + nombre + "Edad " + edad;
    }

    public final String getNombre (){
        return nombre;
    }

    public final int getEdad(){
        return edad;
    }
}
class Estudiante extends Persona {
    private double creditos;

    public Estudiante(String n, int e, double c){
        super(n,e);
        this.creditos = c;
    }

    public String toString(){
        return super.toString() + "\nCreditos: "+ creditos;
    }
}
class Empleado extends Persona {
    private double salario;

    public Empleado(String n, int e, double s){
        super(n,e);
        this.salario = s;
    }

    public String toString(){
        return "Nombre: "+ this.nombre +
        "\nSalario: "+ this.salario;
    }
}
1
2
3
4
5
6
class Test{
    public static void main(String[] args) {
        Estudiante e = new Estudiante("pepe",18,100);
        System.out.println(e.toString());
    }
}

Responde a las siguientes cuestiones justificando las respuestas:
a) ¿Es necesario el uso de this en el constructor de la clase Estudiante?
b) ¿Es necesario el uso de super en el método toString de la clase Estudiante?
c) Si quitásemos el constructor de la clase Estudiante ¿daría un error de compilación?
d) En el método toString de la clase Empleado ¿por qué es incorrecto el acceso que se hace al atributo nombre? ¿Cómo se tendría que definir nombre en la clase Persona para evitar el error?
e) ¿Qué consecuencia tiene que algunos métodos de la clase Persona se hayan definido final?
f) Si el método toString no se hubiera definido en ninguna de las tres clases ¿daría error el sout del método main?


Actividad 07

Seguridad en la Jerarquía de Empleados

  1. Crear una clase Empleado con los atributos nombre, dni y un método calcularSueldo(). El método calcularSueldo() será final y no podrá sobrescribirse.
  2. Crear una subclase Gerente que herede de Empleado. En esta clase se añadirá un atributo bono y un método que devuelva el sueldo total, sumando el bono. El método calcularSueldo() no podrá sobrescribirse debido al uso del modificador final.
  3. Crear una subclase Interno que no pueda tener subclases adicionales utilizando el modificador final en la clase.
  4. Implementar una clase TestEmpleados que pruebe las restricciones de herencia y sobrescritura en las subclases.

< volver a actividades