メソッドをオーバーライドする場合、タイプの代わりにオブジェクトがチェックされることを理解しています
class SuperException extends Exception {}
class SubException extends SuperException {}
class AnotherException extends Exception {}
class YetAnotherException extends Exception {}
class A {
void play() throws SuperException, AnotherException {}
}
class Reduced extends A {
void play() throws SuperException {}
}
class Eliminated extends A {
void play() {}
}
class Narrower extends A {
void play() throws SubException {}
}
class TestPolymorphism {
public static void main(String[] args) {
A obj = new Eliminated();
obj.play(); // Doubt 1
Eliminated eobj = new Eliminated(); // Doubt 2
}
}
疑問 1: なぜ play() はクラス A から参照されるのですか?
疑問 2: なぜコンパイル エラーが発生するのか?