抽象クラスを用いたメソッドの実行方法について
解決したいこと
抽象クラスを用いた場合の、メソッドの実行方法について。
例)
練習用プログラムの例題における、mainクラスからサブクラスのメソッドを実行時の記述において、なぜそうなるのかを知りたいです。
該当するソースコード
public abstract class Player {
//抽象メソッド
abstract void play();
}
public class Radio02 extends Player {
//オーバーライド
void play() {
System.out.println("Musicを再生します");
}
}
public class DvdPlayer02 extends Player {
void play() {
System.out.println("Movieを再生します。");
}
}
public class Polymophism02 {
public static void main(String[] args) {
//オブジェクトの生成
Radio02 myRadio = new Radio02();
DvdPlayer02 myDvdPlayer = new DvdPlayer02();
//スーパークラスの変数を宣言
Player myAVPlayer;
//スーパークラスにサブクラスを代入
myAVPlayer = myRadio;
myAVPlayer.play();
myAVPlayer = myDvdPlayer;
myAVPlayer.play();
}
}
このプログラムにおける以下の部分の、
//スーパークラスの変数を宣言
Player myAVPlayer;
//スーパークラスにサブクラスを代入
myAVPlayer = myRadio;
myAVPlayer.play();
myAVPlayer = myDvdPlayer;
myAVPlayer.play();
なぜ上記のように記述する必要があるのでしょうか。
「スーパークラスの変数を宣言」→「スーパークラスにサブクラスを代入」という段階を踏む意味はなんでしょうか。
自分で試したこと
public class Polymophism02 {
public static void main(String[] args) {
//オブジェクトの生成
Radio02 myRadio = new Radio02();
DvdPlayer02 myDvdPlayer = new DvdPlayer02();
myRadio.play();
myDvdPlayer.play();
}
}
と記載しても、実行結果は同じになると思ったのですが、ご教示お願いします。