DEV Community

TANIAOKA, Akihiro
TANIAOKA, Akihiro

Posted on

12章19

画像に基づいて、a.bye();でコンパイルエラーは発生する可能性があります。これは、変数aA型として宣言されており、Aクラスにはbye()メソッドが定義されていないためです。Javaでは、変数の静的型(コンパイル時の型)に基づいてメソッドの可視性が決まるため、A型のaではBクラスのbye()メソッドは見えません。

この問題を回避するためには、以下のようにaB型として宣言することが考えられます:

public class Main {
    public static void main(String[] args) {
        B a = new B(); // ここをB型に変更
        a.bye();
    }
}
Enter fullscreen mode Exit fullscreen mode

これにより、aBのインスタンスとして扱われ、bye()メソッドが正しく呼び出されます。

Top comments (0)