すみませんが、質問です。

クラス継承についてですが、親クラス、子クラスに共通して、同名のパブリッ
クなインスタンス変数があり、その初期値は親と子で違うとします。

子クラスのインスタンスを作り、それを親クラスの型の変数に代入した場合、
その変数のインスタンス変数には、親の価が入っています。

public class Parent {
public String hoge = "親";
}

public class Child extends Parent {
public String hoge = "子";
}

Parent x = new Child();
System.out.println(x.hoge); // => 親
System.out.println((new Child()).hoge); // => 子

要するに、パブリックなインスタンス変数は、子によってオーバライドできな
いのです。メソッドと違って。

どうしてこれは、こういう言語仕様になっているのでしょうか?
メソッドのようにオーバライドできてもいいと私は思うのですが。