Скрытие данных в java с динамической переменной

Я читаю Java в NutShell и наткнулся на скрытие данных. А потом я попробовал несколько примеров и запутался в 1 примере.

Предположим, у нас есть два класса:

 Class Parent{
  public int a=1;
  }

 Class Child extends Parent {
  public int a=2;
 }

И создание объекта этих двух классов в основной функции:

public static void main (String args[])
{
    Child ch= new Child();
    Parent pa=new Child();

    System.out.println(ch.a);
    System.out.println(pa.a);
 }

И вывод: 2 и 1. Я не понимаю, почему вторая строка печатает 1. Поскольку pa является объектом Child, он должен скрывать значение родительского класса.

Кто-нибудь может объяснить, как это работает?


person GKhetan    schedule 02.01.2015    source источник