Вы никогда не переопределяете поля для начала - вы всегда скрываете их.Поля не являются полиморфными ... другими словами, если вы напишите:
Superclass x = new Subclass();
System.out.println(x.field);
и оба Superclass
и Subclass
объявят поле с именем field
, оно будет всегда в любом случае используйте суперкласс, потому что это все, что может "видеть" компилятор.
Лично я стараюсь сохранять свои переменные закрытыми в любом случае ...