Hola te saluda Ubaldo Acosta bienvenidos nuevamente a este curso de programación con aullaba en esta
elección vamos a estudiar el tema de conversión de objetos en Java están listos.
Vamos
conversión de objetos en Llada.
Sabemos que un objeto creado en la memoria siempre va a ser del mismo tipo por lo que su tipo nunca
cambiará.
Sin embargo una variable de cierto tipo puede apuntar a distintos tipos siempre y cuando haya una relación
entre ellos en la figura podemos ver que una variable de tipo empleado puede almacenar referencias de
objetos de tipo empleado o cualquier subclase como puede ser la clase de gerente escritor corrector
etc..
Hay ocasiones en las que es necesario hacer una conversión del tipo de la variable que apunta a un objeto
con el objetivo de ejecutar cierto código o generalizar nuestro código y así soportar múltiples operaciones
para múltiples tipos de datos desde una misma función generalizada.
Esto nos permite reutilizar código entre varios beneficios más de la programación orientada a objetos
y en general de las buenas prácticas de programación.
Si hacemos una conversión a un tipo más específico es decir un tipo inferior en la jerarquía de clases
a un tipo superior se conoce como un casting es decir conversión hacia arriba y si por el contrario
convertimos de un tipo superior a un tipo inferior se conoce como da un casting ese tema se utilizará
en Java en muchísimos casos.
Por ello es importante tenerlo muy claro el casting se realiza de manera automática y no hay necesidad
de escribir algún código de manera explícita debido a que sí es un tipo superior en automático se realiza
la conversión.
Esto es muy similar a los tipos primitivos en Java y la conversión entre ellos.
Por otro lado la conversión hacia abajo o un casting no se realiza de manera automática y es necesario
especificar cuál es el tipo al que queremos convertir y de hecho en caso de realizar una conversión
errónea se lanzará una excepción de tipo clasicas exception.
Más adelante veremos el tema de excepciones para realizar un casting sólo debemos especificar entre
paréntesis el tipo al cual deseamos convertir nuestro tipo de dato y con ello tendremos un tipo de dato
que por consiguiente ya incluye todas las características del tipo más específico recién convertido.
Veamos un ejemplo de esto
conversión de objetos en IAVA
podemos observar en el código.
Un ejemplo de conversión.
Este ejemplo lo vamos a desarrollar a detalle más adelante.
Sin embargo vamos a mencionar varias cuestiones para que entendamos cómo funciona la conversión de objetos.
El objetivo de convertir objetos es poder acceder a los métodos de cada objeto según necesitemos por
ejemplo en la línea 5 estamos creando un objeto de tipo escritor.
Recordemos que este objeto nunca cambia de tipo siempre será el mismo.
Esta referencia es asignada a una variable de tipo empleado es decir a una clase de mayor jerarquía
según nuestro diagrama de clases de la lámina anterior.
Esto se conoce como un casting por lo que no requiere ninguna sintaxis especial para hacer una conversión
hacia arriba en la jerarquía de clases.
Lo único que sucede es que ya no es posible acceder a los métodos creados en la clase escritor sino
que sólo están disponibles los métodos de la clase empleado.
Por ello si quisiéramos mandar a llamar algún método de la clase escritor directamente no sería posible
ya que la variable que estamos usando es de tipo superior y no puede acceder directamente a los métodos
de la clase de menor jerarquía.
Es aquí donde entra el tema de conversión de objetos ya que podemos acceder a los métodos de la clase
escritor.
Sin embargo necesitamos convertir la variable de tipo empleado en la línea 10.
Podemos observar esta conversión que se conoce como Dawn casting.
La sintaxis es muy simple sólo debemos poner entre paréntesis el tipo de dato al cual queremos convertir
y posteriormente la variable a convertir pero debe haber una relación en la jerarquía de clases de los
tipos de datos que deseamos convertir.
Esto es muy similar a la conversión de tipos primitivos pero con las ventajas del manejo de objetos.
Otra forma de hacer esto es ahorrarnos la variable y convertirlo en la misma línea de código.
Esto lo podemos ver en la línea 15.
Este tipo de conversión es muy común por lo que debemos entender que no hay necesidad de crear una variable
y realizar la asignación para que podamos ejecutar la conversión de objetos ciertamente es una sintaxis
más compleja pero una vez que nos acostumbremos será fácil detectar lo que sucede básicamente en la
conversión.
En la misma línea comienza por la misma sintaxis que es escribir entre paréntesis el tipo deseado y
posteriormente la variable a convertir.
Lo siguiente es envolver entre paréntesis estos dos elementos y con ello prácticamente tendremos acceso
como si fuera la variable ya convertida al tipo deseado con acceso a los métodos y atributos de la clase
de menor jerarquía cabe mencionar que si es un casting en lugar de un casting no hay necesidad de especificar
el tipo de dato a convertir ya que el compilador detectará que la clase es de mayor jerarquía y se hará
una conversión en automático observamos en la línea 10 que una vez que hemos hecho la conversión hacia
abajo podemos utilizar cualquiera de los métodos del tipo de menor jerarquía pero con más detalle.
Por ejemplo supongamos que la clase escritor ha definido un método llamado G.T tipo de escritura en
texto el cual nos indicará si el escritor escribe a mano o a computadora.
Así podemos ya acceder a este método el cual no es accesible desde la clase empleado pero sí desde la
clase de escritor de esta manera haciendo una conversión de datos es posible acceder a los métodos y
atributos de las clases de menor jerarquía y así recuperar la funcionalidad que al momento de utilizar.
Tipos más genéricos o de mayor jerarquía se pierde.
Vamos a realizar a continuación un ejercicio para poner en práctica el manejo de conversión de objetos.