Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

[Duda] acerca de super

al yo utilizar super.getSalario, no tendría que hacer referencia al salario de la clase madre? Lo pregunto porque lo implementé en el código, es decir, a Funcionario (clase madre) le coloque un salario de 2000 y a Gerente (clase hija) le coloque un salario de 4000. Luego cree el método getBonificacion (en la clase gerente) y le coloque como retorno super.getSalario. Al imprimir gerente.getBonificación me salta como 4000 y no como 2000 habiendo utilizado el super.getSalario como retorno del método getBonificacion.

1 respuesta

¡Hola Alumno, espero que estés bien!

En el caso que mencionas, al utilizar super.getSalario() en el método getBonificacion() de la clase Gerente, estás accediendo al método getSalario() de la clase madre (Funcionario). Sin embargo, es importante tener en cuenta que el valor que se retorna será el correspondiente al objeto específico en el que se está invocando el método. En otras palabras, vea que el método de la clase madre trabaja con this.salario y la clase hija al llamar tal método accede al propio salario.

Es decir, si tienes un objeto de la clase Gerente y llamas al método getBonificacion(), el super.getSalario() dentro de ese método se referirá al salario del Gerente, no al salario del Funcionario.

Por ejemplo, si tienes el siguiente código:

Funcionario funcionario = new Funcionario();
System.out.println(funcionario.getSalario()); // Imprime 2000

Gerente gerente = new Gerente();
System.out.println(gerente.getBonificacion()); // Imprime 4000

En este caso, al llamar gerente.getBonificacion(), se imprimirá 4000 porque el método getSalario() de la clase Gerente (que es el que se invoca con super.getSalario()) retorna el salario del Gerente, que es 4000.

Espero que esto aclare tu duda. Si tienes alguna otra pregunta, estaré encantado de ayudarte.

¡Espero haber ayudado y buenos estudios!