Java Upcasting & Downcasting Guide
In Java, upcasting and downcasting are used to manage the relationship between parent and child classes.
- Upcasting: converting an object of a subclass to an object of a superclass. This allows a superclass reference to point to a subclass object, achieving polymorphism. Upcasting is done automatically and does not require explicit casting.
class Animal {
public void eat() {
System.out.println("Animal is eating");
}
}
class Dog extends Animal {
public void eat() {
System.out.println("Dog is eating");
}
}
public class Main {
public static void main(String[] args) {
Animal animal = new Dog(); // 向上转型
animal.eat(); // 输出 Dog is eating
}
}
- Downcasting involves converting an object of a parent class into an object of a child class. This requires the use of the cast operator and type checking to avoid a ClassCastException.
class Animal {
public void eat() {
System.out.println("Animal is eating");
}
}
class Dog extends Animal {
public void eat() {
System.out.println("Dog is eating");
}
public void bark() {
System.out.println("Dog is barking");
}
}
public class Main {
public static void main(String[] args) {
Animal animal = new Dog(); // 向上转型
if (animal instanceof Dog) {
Dog dog = (Dog) animal; // 向下转型
dog.bark(); // 输出 Dog is barking
}
}
}
It is important to perform type checking when performing a downcasting to avoid encountering a ClassCastException.