Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
5
respuestas

[Duda] método getBonificación

Hola..Tengo una duda..en la clase Gerente, en el método getBonificación, hicimos esto:

public double getBonificacion() { return super.getSalario(); }

sin embargo estuve probando y le quité la palabra super e igual el código me funciono normal, entonces se me generó la duda de porque escibir la palabra super ? si con solo escribir el codigo asi:

public double getBonificacion() { return getSalario(); }

el resultado es el mismo

?????

5 respuestas

Intentare responder tu duda:

La clase Gerente extiende de Funcionario, a funcionario le pertenece el método getSalario(). La clase Gerente al extender de Funcionario hereda todos sus métodos, y tu al utilizar super... estas haciendo referencia al método getSalario() de la clase padre, es decir, de Funcionario. Además creo que super() es un constructor por default en todas las clases.

Por ejemplo, los constructores por defecto para las siguientes clases son:

public Funcionario ()  {
super();
}

public Gerente () {
super();
}

Hola, yo tengo la misma duda que mi compañera, solo que yo lo tengo con this.getSalario(); me retorna a la perfección. Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

Creo no están sobre escribiendo el método bonificación que se encuentra en funcionario.

@Override public double getBonificacion() { return super.getSalario() + this.getSalario() * 0.05; }

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad en tu caso this, super o dejarlo solo como getSaldo, funcionan igual, debido a que lo hereda del padre directamente hola, respondi a esa duda hace unos dias, aqui dejo foto

Buenas tardes a todos. El compañero Yonis Andrés Rubio Rondón está totalmente en lo cierto. Lo que él menciona incluso está dicho y explicado en la documentación oficial de Oracle (aquí el link: https://docs.oracle.com/javase/tutorial/java/IandI/super.html).

En resumen: Usar cualquiera de las dos palabras claves funcionará perfectamente, pero la gran importancia y diferencia al usar super es cuando tenemos un método o constructor que tiene el mismo nombre tanto en nuestra clase hija (subclase) como en nuestra clase padre (superclase). Y si queremos hacer uso y referencia del método o constructor de nuestra superclase dentro de nuestra subclase, debemos utilizar super para ello.