現在、javaを独学で学んでいるのですが、以下のコードの一部が理解ができません。
お手数ですがご解説をお願いできませんでしょうか。
class Foo { protected static int method(int a, int b) { return a * b; } } class Bar extends Foo { public static int method(int a, int b) { int c = super.method(a, b) { return c; } } class Test { public static void main(String[] args) { Bar b = new Bar(); System.out.print(b.method(3,4) + " "); System.out.print(Bar.method(2,3)); } }
上記のようにコード記述すると、
int c = super.method(a, b) {
ここでコンパイルエラーが発生する(正解は int c = Foo.method(a, b) )とのことでした。
解説では「staticメンバからオブジェクトを表すsuperを使用しているため、コンパイルエラーとなります。」と記載されていましたが、Fooクラスのサブクラスであっても上記のような記述が行えないのでしょうか。
大変初歩的な質問で申し訳ありませんが、何卒よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/05/23 08:55
2016/05/23 09:00
2016/05/23 09:20