// 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
メソッドを呼び出すと、期待通りの出力が得られます。