Pensando en Java

Page 64

Esto es, la clase base puede recibir cualquier mensaje que puedas mandar a la clase derivada ya que las dos tienen exactamente el mismo interface. Todo lo que necesitas hacer es upcast de la clase derivada y nunca volver a mirara que tipo exacto de objeto es con el que estas tratando. Todo es manejado a través del polimorfismo. Cuando ves esta forma, parecerá una relación "is-a" pura es la única forma sensible para hacer cosas, y ningún otro diseño indica pensamiento "barroso" y es por definición "broken". Esto es también una trampa. Tan pronto como empieces a pensar de esta forma, volverás y descubrirás que extendido el interface (con, desafortunadamente, la palabra clave extiende parece promover) es la perfecta solución a un problema particular. Esto podría ser llamado una relacción "is-like-a" por que la clase derivada es como la clase base y esto tiene fundamentalmente el mismo interface y pero esto tiene otras caracteristicas que requieren métodos adicionales para implementar:

Mientras esto sea también un ejemplo útil y sensible (depende de la situaci ón) esto tiene una desventaja la parte extendida del interface en la clase derivada no esta disponible desde la clase base, por lo que una vez upcast no puedes llamar los nuevos métodos:

Si no estas upcasting en este caso, no te preocupará pero con frecuencia te encontrarás en una situación en la que necesitas redescubrir el tipo exacto del objeto, por eso puedes acceder a los métodos extendidos de este tipo. La secci ón


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.