¿Qué es Upcasting y Downcasting en Java? Explicación sencilla

Publicado: 2021-01-22

Tabla de contenido

Upcasting y Downcasting en Java

Typecasting en Java se refiere al procedimiento que implica la conversión de un tipo de datos a otro. Esto se puede hacer tanto de forma automática como manual. Mientras que un programador tiene que hacer la conversión manual por su cuenta, se usa un compilador para el proceso automático. Downcasting y upcasting esencialmente son dos tipos de encasillamiento de objetos.

Los objetos hijo y padre son dos tipos distintivos de objetos. Ahora, hay dos formas con la ayuda de las cuales los objetos pueden ser inicializados, posteriormente también heredando las propiedades que tienen las clases padre e hijo. Estas formas incluyen:

  • Niño c = nuevo niño (): accede a todos los miembros que pertenecen a las clases de niños y padres
  • Parent p = new Child (): accede solo a los miembros de la clase principal, así como a los métodos que se han anulado en la clase secundaria

Esencialmente, la conversión de tipos de padres a hijos se conoce como Upcasting, mientras que la conversión de tipos de niños a padres se conoce como Downcasting.

El sistema de encasillamiento se utiliza para asegurarse de que las variables sean procesadas por una función con precisión o no. Si bien el downcasting no es posible implícitamente, uno puede realizar upcasting tanto explícita como implícitamente.

Tanto el downcasting como el upcasting son elementos importantes de Java y permiten a las personas desarrollar programas complejos con el uso de una sintaxis simple. También tienen algunas grandes ventajas como agrupar diversos objetos o polimorfismo.

Aprenda cursos de desarrollo de software en línea de las mejores universidades del mundo. Obtenga programas Executive PG, programas de certificados avanzados o programas de maestría para acelerar su carrera.

Upcasting

En el upcasting, un objeto hijo es un typecast a un objeto de clase padre. Con el uso de este proceso, las personas pueden acceder fácilmente a los métodos y variables distinguidos de la clase de padre a hijo. En el proceso, se requiere acceso solo a algunos de los métodos y variables particulares de la clase secundaria, como los métodos anulados. En muchos casos, el upcasting también se denomina ampliación y generalización. El upcasting se puede llevar a cabo implícitamente y brinda a las personas la flexibilidad para acceder a los miembros de la clase principal.

El siguiente ejemplo puede ayudar a proporcionar una mejor comprensión del proceso.

Ejemplo: hay una clase de animales que presenta diversas clases de animales, siendo el pez uno de ellos. Ahora bien, suponiendo que la clase animal se extienda a la clase pez, habría dos formas de herencia. La herencia es uno de los aspectos clave de la Programación Orientada a Objetos o OOP que permite que una clase herede las características de otra. Esto implica la clase derivada que es un superconjunto de la clase base. Puede haber más métodos presentados aquí que la clase base. Durante el upcast, lo único que puede pasar con la interfaz de clase es que puede terminar perdiendo métodos en lugar de ganarlos. Como resultado de esto, el compilador permite upcasting sin ningún tipo de notaciones especiales o conversiones explícitas.

Composición vs Herencia

Cuando se trata de programación orientada a objetos, existe una alta probabilidad de que uno pueda terminar creando y usando simplemente empaquetando métodos y datos en una clase, y luego haciendo uso de los objetos presentes en esa clase. Las personas pueden incluso usar ciertas clases existentes para desarrollar nuevas clases con composición. La herencia se usa relativamente raramente. Si bien el aprendizaje de OPP, aunque la herencia recibe mucha atención, es importante que los desarrolladores sepan su uso correcto y no intenten usarlo simplemente donde puedan.

De hecho, uno debe usarlo muy raramente, solo para los escenarios donde la herencia es realmente útil. Una de las formas más sencillas de identificar si una persona debe usar la herencia o la composición es preguntarse si necesita pasar de su nuevo elenco al elenco base. En caso de que la conversión hacia arriba sea una necesidad, entonces uno tendría que usar la herencia. Sin embargo, si no es un requisito, entonces uno debe insistir más en la necesidad de la herencia.

abatiendo

Downcasting es otra forma de conversión de tipo de objeto y se utiliza para designar el objeto de referencia de la subclase a la clase principal que no está permitido en Java. Downcast no es demasiado difícil de entender. Por ejemplo, si hay una clase base y una clase que se deriva indirecta o indirectamente de la clase base, cada vez que un objeto del tipo de clase base pasa a ser encasillado en una clase derivada, se denomina conversión a la baja. En consecuencia, según el downcasting, uno bajaría el diagrama de herencia esforzándose por tomar un objeto de clase base y luego convertirlo en un tipo de clase derivado. Sin embargo, es importante tener en cuenta que, según el código que se está escribiendo, la reducción puede o no tener sentido.

A medida que las personas lleven a cabo el sistema de downcasting, no se encontrarán con ningún tipo de error del compilador. Sin embargo, se enfrentarían a java.lang.ClassCastException, que es una excepción de tiempo de ejecución. Entonces, ahora surge la pregunta si la conversión a la baja no es posible en Java, ¿por qué la gente la realiza? En pocas palabras, la reducción de la conversión solo se puede usar en situaciones particulares en las que el objeto al que hace referencia la clase principal pertenece a una subclase.

Downcasting puede ser extremadamente útil al comparar un objeto con otro.

Para comprobar si un downcasting es válido o no, se puede ejecutar

El sistema getClass() permite a los desarrolladores comprender la clase del objeto que se pasa y, posteriormente, compararlo con la clase actual. En caso de que no sean iguales, entonces el downcasting no será válido y probar este proceso no tendrá sentido. El concepto de downcasting utiliza principalmente la conversión de supertipos a los subtipos. Este proceso de fundición se suele realizar de forma explícita. Básicamente, esto implica que los tipos de tamaño más grande se hacen para encajar explícitamente en tipos de tamaño pequeño.

Upcasting vs Downcasting

Upcasting y. Downcasting tiene ciertas diferencias muy particulares. Algunos de ellos han sido subrayados brevemente en los siguientes puntos:

  • En Upcasting, un objeto secundario se convierte en un objeto principal. Por otro lado, la referencia del objeto de la clase principal termina pasando a la clase secundaria cuando se trata de reducir la conversión.
  • Las personas pueden realizar upcasting tanto explícita como implícitamente, mientras que downcasting solo se puede realizar explícitamente.
  • En el caso de upcasting, las personas pueden acceder a las variables y métodos de la clase principal en la clase secundaria, pero no al revés. En downcasting, sin embargo, las variables y los métodos de ambas clases son fácilmente accesibles.
  • Upcasting permite el acceso solo a métodos de clases secundarias particulares. Tanto al realizar el downcasting, todos los métodos y variables que pertenecen a ambas clases se vuelven accesibles.

Conclusión

El upcasting rara vez se usa en Java. En la mayoría de los casos, las personas lo usan cuando tienen que desarrollar un código que solo trata con la clase principal. Cuando se trata de desarrollar un código que proporciona acceso al comportamiento de la clase secundaria, se tiende a utilizar el downcasting.

Si desea aprender Java y obtener una certificación en computación en la nube, upGrad ofrece un Programa de Certificado Avanzado en Cloud Computing . El curso en línea de 7,5 meses está diseñado específicamente para profesionales que trabajan para ayudarlos a ingresar a los roles de computación en la nube.

Conviértase en un desarrollador de pila completa

SOLICITE AHORA LA MAESTRÍA EN CIENCIAS DE LA COMPUTACIÓN DE LIVERPOOL JOHN MOORES