初学者のJavaでの質問です。
下記のコードは、「int c=super.method(a,b);」でエラーが出ます。
エラー: staticでない変数 superをstaticコンテキストから参照することはできません
mainメソッドで、Aを継承したBをインスタンス化しています。
その場合、「super.method(a,b);」と記載することがなぜエラーになるのか理解できません。
たしか、staticなフィールドをインスタンス化しても、コンパイラーが暗黙的にstaticなフィールドとして呼び出すと記憶していました。よって、A.method(a,b);としてくれるのかなと思ったわけです。
staticなメソッドから、superを使用することが出来ないというのが答えのようですが理解できません。どうやって理解したら良いでしょうか?
class A{
protected static int method(int a,int b){return a*b;}
}
class B extends A{
public static int method(int a,int b){
int c=super.method(a,b);//エラーが出る
return c;
}
}
class Test{
public static void main(String[] args){
B b=new B();
System.out.print(B.method(3,4)+" ");
System.out.print(A.method(2,3));
}
}
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/06 15:15 編集