Javaのアップキャスト/ダウンキャストとは?基本と安全な変換方法
Javaにおいて、アップキャストとダウンキャストは親クラスと子クラスの関係を扱うために使用される。
- 向上変換:サブクラスのオブジェクトをスーパークラスのオブジェクトに変換します。これにより、スーパークラスの参照がサブクラスのオブジェクトを指すことができ、ポリモーフィズムを実現します。向上変換は自動的に行われ、強制的な変換は必要ありません。
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
}
}
- 向下キャスト:親クラスのオブジェクトをサブクラスのオブジェクトに変換することです。強制的な型変換演算子を使用し、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
}
}
}
注意すべきポイントは、ダウンキャストする際に必ず型チェックを行うことで、ClassCastException例外が発生しないようにすることだ。