The answer for this question is that polymorphism applies only to methods and not to variables.
The method version that will be called is defined at runtime by applying polymorphism.
On the other hand, the variable version that will be acessed (from parent or child class) is defined at compile time. So, as c1 is of type CovariantTest and getObject in this class returns an object of type A, at compile time the compiler knows that variable from A class must be accessed.
Hope that helps.
"If someone asks you to do something you don't know how to, don't tell I don't know, tell I can learn instead." - Myself