10.05.2014 Views

programación i - Universidad ORT Uruguay

programación i - Universidad ORT Uruguay

programación i - Universidad ORT Uruguay

SHOW MORE
SHOW LESS

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.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!