Java Language was designed without the functionality to override fields, but allowing you to override methods - this is the main reason why you can't get polymorphical effect with the fields. Polymorphism is taken into account when you have overriden methods in child class (with exactly the same signature and return type). As fields doesn't support polymorphism, field from declared class is taken:
Parent abc = new Child(); // declared type is Parent
You may want to have a look at this link (https://docs.oracle.com/javase/tutorial/java/IandI/override.html) to read a bit more about overriding methods:
An instance method in a subclass with the same signature (name, plus the number and the type of its parameters) and return type as an instance method in the superclass overrides the superclass's method.
The ability of a subclass to override a method allows a class to inherit from a superclass whose behavior is "close enough" and then to modify behavior as needed. The overriding method has the same name, number and type of parameters, and return type as the method that it overrides. An overriding method can also return a subtype of the type returned by the overridden method. This subtype is called a covariant return type.
Additional informations about when polymorphism is taken into account, you may find here:
https://docs.oracle.com/javase/tutorial/java/IandI/polymorphism.html