Hola comunidad, a mi parecer creo que la explicación que Diego indica a partir del minuto 5:18 de esta aula o sección 09, no concuerda con los resultados obtenidos por mí. Porque resulta que a manera de comprobar lo indicado, eliminé la sobreescritura del método getBonificar() de la clase Contador, pero ése método si seguía estando en las clases Funcionario y Gerente, entonces quise realizar la consulta para saber cual era la bonificación que le correspondía a un objeto de la clase Contador, y en ese caso el método getBonificar() que se ejecuto fue precisamente el de la clase Funcionario y no el método de la clase Gerente. Se observa claramente que el resultado que muestra en consola es exactamente el 10% (500) del salario de 'yosigiro' que es de 5000 y ese es el porcentaje definido en el método para un objeto de Funcionario o heredado de él. Ahora si habilito ése método en Contador, si se ejecuta el método definido en Contador, tal como se puede observar. Si alguien cree que estoy equivocado con esa apreciación, por favor que realice la respectiva explicación. Anexo los códigos:
public class Contador extends Funcionario{
/*@Override
public double getBonificar() {
System.out.println("Ejecutando método desde Contador");
return 800;
}*/
}
public static void main(String[] args) {
Funcionario armando=new Funcionario();
armando.setNombre("Armando Trampas");
Funcionario juanito=new Funcionario();
juanito.setNombre("Juanito Alimaña");
Gerente pancha=new Gerente();
pancha.setNombre("Espernancación Segura");
Gerente chelo=new Gerente();
chelo.setNombre("Aquiles Pinto");
armando.setSalario(2000);
pancha.setSalario(10000);
juanito.setSalario(3000);
chelo.setSalario(10000);
Contador yosigiro=new Contador();
yosigiro.setNombre("Yosigiro Chequesito");
yosigiro.setSalario(5000);
ControlBonificaciones controlBonificaciones =new ControlBonificaciones();
System.out.println("La bonificacion de "+armando.getNombre()+" es: "+armando.getBonificar());
controlBonificaciones.registrarBonificaciones(armando);
System.out.println("La bonificacion de "+pancha.getNombre()+" es: "+pancha.getBonificar());
controlBonificaciones.registrarBonificaciones(pancha);
System.out.println("La bonificacion de "+juanito.getNombre()+" es: "+juanito.getBonificar());
controlBonificaciones.registrarBonificaciones(juanito);
System.out.println("La bonificacion de "+chelo.getNombre()+" es: "+chelo.getBonificar());
controlBonificaciones.registrarBonificaciones(chelo);
System.out.println("La bonificacion de "+yosigiro.getNombre()+" es: "+yosigiro.getBonificar());
controlBonificaciones.registrarBonificaciones(yosigiro);
}
}
Ejecutando el método desde Funcionario.
La bonificacion de Aquiles Pinto es: 11000.0
Ejecutando método desde Gerente
Ejecutando el método desde Funcionario.
El total de bonificaciones hasta el momento es: 22500.0
Ejecutando el método desde Funcionario.
La bonificacion de Yosigiro Chequesito es: 500.0
Ejecutando el método desde Funcionario.
El total de bonificaciones hasta el momento es: 23000.0
Ahora habilitando el método getBonificar() en Contador:
public class Contador extends Funcionario{
@Override
public double getBonificar() {
System.out.println("Ejecutando método desde Contador");
return 800;
}
}
El total de bonificaciones hasta el momento es: 22500.0
Ejecutando método desde Contador
La bonificacion de Yosigiro Chequesito es: 800.0
Ejecutando método desde Contador
El total de bonificaciones hasta el momento es: 23300.0