programación i - Universidad ORT Uruguay
programación i - Universidad ORT Uruguay
programación i - Universidad ORT Uruguay
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Programación I 87<br />
e2 = new Empleado();<br />
e2.setEdad(20) ;<br />
if (e1.esMenorQue(e2)) {<br />
System.out.println("E1 es menor" );<br />
}<br />
else {<br />
System.out.println("E2 es menor");<br />
}<br />
}<br />
}<br />
Notar que el método esMenorQue(Persona) recibe un objeto Persona, no Empleado.<br />
¿Por qué funciona? Funciona debido al upcasting. Todo empleado es una persona, el hecho de<br />
considerar un empleado como persona se hace de forma automática y se llama upcasting.<br />
La clase derivada es un super conjunto de la clase base, así puede contener más métodos pero<br />
debe tener al menos los de la clase base. Por eso el compilador deja hacerlo sin problemas.<br />
En el ejemplo, Empleado es un tipo de Persona. Cualquier mensaje que acepte un objeto<br />
Persona, aceptará también un objeto Empleado.<br />
8.3.10.2 Polimorfismo<br />
¿Qué imprime el siguiente código?<br />
Persona pers1, pers2;<br />
persona1 = new Persona();<br />
System.out.println(persona1.mensaje());<br />
persona2 = new Empleado();<br />
System.out.println(persona2.mensaje());<br />
Imprime:<br />
Es persona<br />
Empleado<br />
Al ejecutar, se da cuenta que la variable persona2 "mira" a un objeto Empleado, usa método de<br />
empleado. El método mensaje es polimórfico, usa el adecuado dependiendo del receptor.<br />
Polimorfismo es una técnica por la cual una referencia que es usada para invocar a un método<br />
puede resultar en diferentes métodos invocados en diferentes momentos.<br />
8.3.10.3 Downcasting<br />
Ejemplo 1: Analizar qué pasa si se escribe en el main:<br />
Empleado e3;<br />
e3 = new Persona();<br />
No compila pues una persona podría no ser empleado.