ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

UPCASTING Y DOWNCASTING


Enviado por   •  2 de Marzo de 2016  •  Documentos de Investigación  •  507 Palabras (3 Páginas)  •  264 Visitas

Página 1 de 3

UPCASTING Y DOWNCASTING

Como se puede adivinar, desde el momento que existe algo conocido como upcasting - mover en sentido ascendente por una jerarquía de herencia - debe existir el downcasting para mover en sentido descendente en una jerarquía. Pero el upcasting es sencillo porque al movernos en sentido ascendente en la jerarquía de clases siempre convergemos en clases más generales. Es decir, cuando se hace un upcast siempre se está en una clase claramente derivada de un ascendente (normalmente solo uno, excepto en el caso de herencia múltiple) pero cuando se hace downcast hay normalmente varias posibilidades a las que amoldarse. Más concretamente, un Circulo es un tipo deFigura (que sería su upcast), pero si se intenta hacer un downcast de una Figura podría ser unCirculo, un Cuadrado, un Triángulo, etc. El problema es encontrar un modo seguro de hacerdowncast (aunque es incluso más importante preguntarse por qué se está usando downcasting en vez de usar el polimorfismo para que adivine automáticamente el tipo correcto. En el Volumen 2 de este libro se trata como evitar el downcasting.

Upcasting significa tomar una referencia a un objeto y cambiar su tipo a la de cualquiera de sus clases padre. (Para java, añadir a esta lista también todas las interfaces que cualquiera de las clases de los padres puede ser de aplicación)

Upcasting en java es implícita. Esto significa que usted no necesita el paréntesis anterior con el tipo upcasting .

A a = b;

Habría funcionado igual. Esto se debe a que va desde algo específico (clase B - hijo) a algo más general (clase A - padre) y el compilador Java puede inferir de este hecho por su diseño .

Downcasting es lo contrario:

A a = new B (); / / aquí se tiene un objeto de la clase B

/ / hace referencia a una variable de la clase A

/ / Upcasting implícito que pasa aquí .

B = b (B ) a; / / Esto es downcasting .

Downcasting debe ser explícita. Si intenta abatido un oponerse a un tipo que no puede ser downcasted para, a continuación, el compilador ofrecer protección dándote un error.

De lo contrario el programa se habría estrellado en tiempo de ejecución .

El problema con esto es que crea una dependencia en ese segmento de código y el tipo B. Si en el futuro se crea hermano a B clases tendrá que acordarse de cambiar todos los lugares donde hay coincidencias con " instanceof " y esto puede ser una pesadilla intento en un sistema grande .

Así que, en general, que desea crear código que evita downcasting . Esto no siempre es posible y no siempre es una

...

Descargar como (para miembros actualizados)  txt (3 Kb)   pdf (55.3 Kb)   docx (9.5 Kb)  
Leer 2 páginas más »
Disponible sólo en Clubensayos.com