// 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
メソッドを呼び出しています。