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 89<br />
Semana 9<br />
9.1 Repaso de Upcast, Polimorfismo, Abstract<br />
Se disponen de las siguientes definiciones vistas la semana anterior:<br />
Persona<br />
int edad<br />
Empleado (subclase de Persona)<br />
int sueldo<br />
métodos<br />
setEdad (int unaEdad)<br />
int getEdad()<br />
boolean esMenorQue(Persona)<br />
String mensaje() (retorna “En Persona”)<br />
métodos<br />
setSueldo(int unSueldo)<br />
int getSueldo()<br />
String mensaje() (retorna “En Empleado”)<br />
Indicar en cada uno de los ejemplos que pasaría:<br />
En el main:<br />
¿Resultado? ¿Funciona?<br />
1 Empleado e1;<br />
e1 = new Empleado();<br />
e1.setEdad(39);<br />
Funciona por herencia<br />
2 Empleado e2 = new Empleado();<br />
e2.setEdad(25);}<br />
if (e1.es MenorQue (e2)) {<br />
…<br />
}<br />
3 Persona p1 = new Empleado()<br />
System.out.println(p1.mensaje())<br />
Funciona por upcast: todo empleado es<br />
Persona (Observar que el método esMenorQue<br />
está definido para recibir un objeto Persona).<br />
Compila (pues en Persona esta el método<br />
mensaje).<br />
En ejecución sale “En Empleado”, porque es<br />
polimórfico<br />
4 p1.setSueldo(100) No funciona, en tiempo de compilación asume<br />
que p1 es Persona, no sabe que luego será<br />
empleado<br />
5 (Empleado)p1.setSueldo(100) Anda, pues se hizo explícitamente el cast<br />
6 Agrego en Persona:<br />
public abstract class Persona<br />
Persona p2 = new Persona()<br />
7 Agrego en Persona:<br />
public abstract int totalImpuestos()<br />
Empleado e3 = new Empleado()<br />
No anda, si la clase es abstract no se puede<br />
crear instancias.<br />
No funciona, debo incluir en Empleado el<br />
método totalImpuestos(), sino la clase queda<br />
abstract. Debería incluir el método en<br />
Empleado.