メソッドのオーバーライドはフィールドのオーバーライドとは異なる動作をすることに気づきました。次のスニペットを検討します。
public class Bar {
int v =1;
public void printAll(){
System.out.println(v);
printV();
}
public void printV(){
System.out.println("v is " + v);
}
}
public class Foo extends Bar {
int v = 4;
public static void main(String[] args) {
Foo foo = new Foo();
foo.printAll();
}
public void printV() {
System.out.println("The value v is " + v);
}
}
結果は次のようになります
。1
値vは4です。
したがって、バーのメソッドprintVはfoo.printVによってオーバーライドされますが、フィールドvはバーで上書きされないようです。誰かがこの違いの理由を知っていますか?
ありがとう。