As said by @drrob, fields are only hidden, not overriden. As polymorphism is behavioral concept.
And even it makes a difference how do you declare a. To make it clear,
I have added a little code, called from main.
Look at the following scenarios
AA a = new BB ();
System.out.println( " finally1 = "+a._x);
System.out.println( " finally2 = "+a.getX ( ));
BB a1 = new BB ();
System.out.println( " finally3 = "+a1._x);
System.out.println( " finally4 = "+a1.getX());
Here output for the output shall be as following :
finally1 = 30
finally2 = 31
finally3 = 31
finally4 = 31