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

// Movieクラスの定義
class Movie {
    // watchメソッド
    public void watch() {
        System.out.println("映画を観ます");
    }
}

// ActionMovieクラスの定義
class ActionMovie extends Movie {
    // 親クラスのwatchメソッドをオーバーライド
    @Override
    public void watch() {
        System.out.println("アクション映画を観ます");
    }
}

// ComedyMovieクラスの定義
class ComedyMovie extends Movie {
    // 親クラスのwatchメソッドをオーバーライド
    @Override
    public void watch() {
        System.out.println("コメディ映画を観ます");
    }
}

// メインクラス
public class Main {
    public static void main(String[] args) {
        // Movieクラスのインスタンスを生成してwatchメソッドを呼び出す
        Movie genericMovie = new Movie();
        genericMovie.watch(); // 出力: 映画を観ます

        // ActionMovieクラスのインスタンスを生成してwatchメソッドを呼び出す
        ActionMovie actionMovie = new ActionMovie();
        actionMovie.watch(); // 出力: アクション映画を観ます

        // ComedyMovieクラスのインスタンスを生成してwatchメソッドを呼び出す
        ComedyMovie comedyMovie = new ComedyMovie();
        comedyMovie.watch(); // 出力: コメディ映画を観ます
    }
}

このコードでは、Movie クラスが基本の watch メソッドを持ち、ActionMovie クラスと ComedyMovie クラスがそれぞれ独自の watch メソッドをオーバーライドしています。それぞれのクラスのインスタンスを生成し、watch メソッドを呼び出すと、期待通りの出力が得られます。

「014 継承」問題集リスト