Downcasting en Java
Si está trabajando con Java, puede trabajar con TypeCasting
, UpCasting
o DownCasting
. El propósito de su uso es convertir de un tipo a otro.
Esto puede ser con variables u objetos. Para un objeto, hay dos tipos de transformación disponibles.
El primero es de padre a hijo y el segundo es de hijo a padre.
Aquí, la conversión de Hijo a Padre se conoce como UpCasting
, y la conversión de Padre a Hijo se conoce como DownCasting
. Podemos realizar implícita o explícitamente el UpCasting
, pero solo podemos realizar DownCasting
de forma explícita.
En este artículo, veremos los detalles de DownCasting
. Además, describiremos el tema mediante el uso de ejemplos y explicaciones necesarios para facilitar el tema.
Downcasting en Java
Ahora vamos a ver un ejemplo de DownCasting
.
class ParentClass {
String name;
void showMessage() {
System.out.print("Parent class method is called");
}
}
class ChildClass extends ParentClass {
int age;
@Override
void showMessage() {
System.out.print("The child class method is called");
}
}
class Downcasting {
public static void main(String[] args) {
ParentClass Parent = new ChildClass();
Parent.name = "Alex";
ChildClass Child = (ChildClass) Parent;
Child.age = 21;
System.out.print("Name:" + Child.name + " ");
System.out.println("Age:" + Child.age);
Child.showMessage();
}
}
Expliquemos el código parte por parte. En primer lugar, creamos una clase principal llamada ParentClass
, y luego creamos una clase secundaria llamada ChildClass
y la extendimos con ParentClass
.
En ChildClass
, realizamos la anulación por @Override
.
Después de eso, creamos otra clase llamada Downcasting
, nuestra clase controladora. En la clase, creamos un objeto de ParentClass
.
Luego proyectamos hacia abajo un objeto con la línea ChildClass Child = (ChildClass)Parent;
.
Por último, imprimimos todos los datos. Ahora, después de ejecutar el programa Java anterior.
Obtendrá una salida como la siguiente.
Name:Alex Age:21
The child class method is called
Error del compilador cuando intenta hacer downcast implícitamente
En el ejemplo anterior, realizamos el downcasting explícitamente. Si intenta hacer downcast implícitamente, es posible que obtenga un error.
Mira el siguiente ejemplo en el que intentamos abatir implícitamente.
class ParentClass {
String name;
void showMessage() {
System.out.print("Parent class method is called");
}
}
class ChildClass extends ParentClass {
int age;
@Override
void showMessage() {
System.out.print("Child class method is called");
}
}
class Downcasting {
public static void main(String[] args) {
ParentClass Parent = new ChildClass();
Parent.name = "Alex";
ChildClass Child = new ParentClass();
Child.age = 21;
System.out.print("Name:" + Child.name + " ");
System.out.println("Age:" + Child.age);
Child.showMessage();
}
}
Si intenta compilar el programa anterior, obtendrá un error como el siguiente.
/tmp/AMCRVnDhlV/Downcasting.java:22: error: incompatible types: ParentClass cannot be converted to ChildClass
ChildClass Child = new ParentClass();
^
1 error
Tenga en cuenta que DownCasting
debe realizarse externamente. Al usar DownCasting
, un objeto secundario puede obtener las propiedades de su objeto principal.
Tenga en cuenta que los ejemplos de código compartidos aquí están en Java y debe instalar Java en su entorno si su sistema no contiene Java.
Aminul Is an Expert Technical Writer and Full-Stack Developer. He has hands-on working experience on numerous Developer Platforms and SAAS startups. He is highly skilled in numerous Programming languages and Frameworks. He can write professional technical articles like Reviews, Programming, Documentation, SOP, User manual, Whitepaper, etc.
LinkedIn