Java Upcasting & Downcasting Guide

In Java, upcasting and downcasting are used to manage the relationship between parent and child classes.

  1. 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
   }
}
  1. 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.

bannerAds