014 継承(オーバーライドされたメソッドの利用) 025 解答例

// ElectronicDeviceクラスの定義
class ElectronicDevice {
    // turnOnメソッド
    public void turnOn() {
        System.out.println("電源を入れます");
    }
}

// Phoneクラスの定義(ElectronicDeviceクラスを継承)
class Phone extends ElectronicDevice {
    // makeCallメソッド
    public void makeCall() {
        System.out.println("電話をかけます");
    }

    // turnOnメソッドのオーバーライド
    @Override
    public void turnOn() {
        System.out.println("電話をかける前に電源を入れます");
        super.turnOn(); // 親クラスのturnOnメソッドを呼び出す
    }
}

// Laptopクラスの定義(ElectronicDeviceクラスを継承)
class Laptop extends ElectronicDevice {
    // runSoftwareメソッド
    public void runSoftware() {
        System.out.println("ソフトウェアを実行します");
    }

    // turnOnメソッドのオーバーライド
    @Override
    public void turnOn() {
        System.out.println("ソフトウェアを実行する前に電源を入れます");
        super.turnOn(); // 親クラスのturnOnメソッドを呼び出す
    }
}

// メインクラス
public class Main {
    public static void main(String[] args) {
        // Phoneクラスのインスタンス
        Phone phone = new Phone();
        phone.turnOn();   // 電話をかける前に電源を入れます / 電源を入れます
        phone.makeCall();  // 電話をかけます

        // Laptopクラスのインスタンス
        Laptop laptop = new Laptop();
        laptop.turnOn();      // ソフトウェアを実行する前に電源を入れます / 電源を入れます
        laptop.runSoftware();  // ソフトウェアを実行します
    }
}

このコードでは、ElectronicDevice クラスが基本的な turnOn メソッドを提供し、Phone クラスと Laptop クラスがそれを継承して必要なメソッドをオーバーライドしています。それぞれのクラスのインスタンスを作成し、メソッドを呼び出すことで、対応するメッセージが表示されます。

「014 継承」問題集リスト