El encasillamiento es uno de los conceptos más importantes que básicamente se ocupa de la conversión de un tipo de datos a otro tipo de datos de forma implícita o explícita. En este artículo, se analiza el concepto de encasillamiento de objetos.
Al igual que los tipos de datos, los objetos también se pueden encasillar. Sin embargo, en los objetos, sólo hay dos tipos de objetos, es decir, el objeto padre y el objeto hijo. Por lo tanto, encasillar objetos básicamente significa que un tipo de objeto (es decir,) es hijo o padre de otro. Hay dos tipos de encasillamiento. Ellos son:
- Upcasting: Upcasting es el encasillamiento de un objeto hijo a un objeto padre . La conversión ascendente se puede realizar de forma implícita. Upcasting nos brinda la flexibilidad de acceder a los miembros de la clase principal, pero no es posible acceder a todos los miembros de la clase secundaria utilizando esta función. En lugar de todos los miembros, podemos acceder a algunos miembros específicos de la clase secundaria. Por ejemplo, podemos acceder a los métodos anulados. Downcasting: De manera similar, downcasting significa encasillar a una objeto padre a un objeto hijo . El abatimiento no puede ser implícito.
La siguiente imagen ilustra el concepto de upcasting y downcasting:

Ejemplo: Que haya una clase para padres. Puede haber muchos hijos de un padre. Tomemos en consideración a uno de los niños. El niño hereda las propiedades del padre. Por lo tanto, existe una relación de es-un entre el niño y el padre. Por lo tanto, el niño puede ser implícitamente upcasted al padre. Sin embargo, un padre puede heredar o no las propiedades del niño. Sin embargo, podemos forzar la conversión de un padre a un hijo, lo que se conoce como abatiendo . Después de definir explícitamente este tipo de conversión, el compilador comprueba en segundo plano si este tipo de conversión es posible o no. Si no es posible, el compilador genera una ClassCastException.
Entendamos el siguiente código para comprender la diferencia:
Java
¿Cuándo se inventó la primera computadora?
¿Cómo funciona una computadora?
// Java program to demonstrate> // Upcasting Vs Downcasting> // Parent class> class> Parent {> >String name;> >// A method which prints the> >// signature of the parent class> >void> method()> >{> >System.out.println(>'Method from Parent'>);> >}> }> // Child class> class> Child>extends> Parent {> >int> id;> >// Overriding the parent method> >// to print the signature of the> >// child class> >@Override> void> method()> >{> >System.out.println(>'Method from Child'>);> >}> }> // Demo class to see the difference> // between upcasting and downcasting> public> class> GFG {> >// Driver code> >public> static> void> main(String[] args)> >{> >// Upcasting> >Parent p =>new> Child();> >p.name =>'techcodeview.com'>;> >//Printing the parentclass name> >System.out.println(p.name);> >//parent class method is overridden method hence this will be executed> >p.method();> >// Trying to Downcasting Implicitly> >// Child c = new Parent(); ->error de tiempo de compilación> >// Downcasting Explicitly> >Child c = (Child)p;> >c.id =>1>;> >System.out.println(c.name);> >System.out.println(c.id);> >c.method();> >}> }> |
>
>Producción
techcodeview.com Method from Child techcodeview.com 1 Method from Child>
Una figura ilustrativa del programa anterior:

Del ejemplo anterior podemos observar los siguientes puntos:
mi flixer
- Sintaxis de Upcasting:
Parent p = new Child();>
- La actualización se realizará internamente y, debido a la conversión, el objeto puede acceder solo a los miembros de la clase principal y a los miembros especificados de la clase secundaria (métodos anulados, etc.), pero no a todos los miembros.
// This variable is not // accessible p.id = 1;>
- Sintaxis de Downcasting:
Child c = (Child)p;>
- La reducción debe realizarse externamente y, debido a la reducción, un objeto secundario puede adquirir las propiedades del objeto principal.
c.name = p.name; i.e., c.name = 'techcodeview.com'>