-1
public class A {
public String s="A";
public static int i=1;
}
public class B extends A {
public String s="B";
public static int i=2;
public static void main(String [] args) {
A a= new B();
B b= new B();
System.out.print(a.s+a.i);
System.out.print(b.s+b.i);
}
}
出力が "A1B1"ではなく "A1B2"であるのはなぜですか?フィールドはオーバーライドできませんし、静的フィールドもオーバーライドできません。javaは静的フィールドをオーバーライドします
あなたは何も上書きしていません - あなたは**フィールドを隠しています。 –
静的フィールドで「隠蔽」を行うことはできますか? – avivlevi
隠しと上書きの違いは何ですか? – avivlevi