015 ポリモーフィズム(ダウンキャスト) 009 解答例

// Vehicle クラスとそのサブクラス Car クラス、さらにそのサブクラス SportsCar クラス
class Vehicle {
    void start() {
        System.out.println("Vehicle is starting");
    }
}

class Car extends Vehicle {
    void drift() {
        System.out.println("Car is drifting");
    }
}

class SportsCar extends Car {
    void turboBoost() {
        System.out.println("SportsCar is boosting");
    }
}

public class Main {
    public static void main(String[] args) {
        // Vehicle クラスのオブジェクトを作成
        Vehicle vehicle = new Vehicle();

        // Vehicle クラスのオブジェクトを SportsCar クラスにダウンキャスト
        if (vehicle instanceof SportsCar) {
            SportsCar sportsCar = (SportsCar) vehicle; // ダウンキャスト
            sportsCar.turboBoost(); // SportsCar クラスのメソッドを呼び出す
        } else {
            System.out.println("Vehicle is not a SportsCar");
        }
    }
}

この例では、Vehicle クラスのオブジェクトを作成し、これを SportsCar クラスにダウンキャストしています。instanceof 演算子を使用して、元のオブジェクトが SportsCar クラスのインスタンスであるかを確認しています。そして、ダウンキャスト後に SportsCar クラスのメソッドである turboBoost メソッドを呼び出しています。

「015 ポリモーフィズム」問題集リスト