es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿El upcasting es desde la referencia del objeto actual o desde el tipo de objeto real?

Me encontré con una pregunta en la escuela que pedía el tipo de conversión de tipos y si ocurrió un error.

InterfaceA obj = new ClassB();
ClassA obj2 = obj;

Entiendo que la primera línea causaría un error de tiempo de compilación debido a que ClassB es abstracto. Sin embargo, ¿funcionaría la segunda línea, convirtiendo de una clase real tipo ClassB con referencia de objeto InterfaceA, a ClassA? (si ClassB no es abstracto)

Dado el siguiente diagrama de clases UML:

enter image description here

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Si ClassB no es abstracta, entonces la segunda línea debería funcionar como un ejemplo de upcasting. La referencia de objeto obj es de tipo InterfaceA, pero el objeto real que se está haciendo referencia es de tipo ClassB. Sin embargo, dado que ClassB implementa InterfaceA, puede ser convertido a InterfaceA. Y dado que ClassA es una superclase de ClassB, también puede ser convertido a ClassA. Por lo tanto, la segunda línea de código debería funcionar sin errores.

    Es importante señalar que en este escenario, obj2 no tendría acceso a ningún método o atributo específico de ClassB, solo aquellos heredados de ClassA.

Comments are closed.