首先,变量并不具有多态性,域访问的操作将被编译器解析。
子类是参考父类才能被构造出来,父类的变量和方法必然在子类中被保存下来,也就是说,子类中有父类的成员变量A,也可以有自己成员变量a,而他们不是一个概念,即使他们碰巧名字相同,也不是同一个东西。当父类引用指向子类对象的时候,这个引用看到的当然只是它自己的A.同理,子类中虽然有父类的变量A,但是如果子类想要调用,它只能通过super才能拿得到父类的这个变量。
java的多态即运行时绑定,而java中除了用static和final可以关闭多态性,其他的都是运行时才被决定调用谁,即使你使用static或final来关闭掉多态,当你这个引用被当成父类来用时,虽然它指向的是子类对象,但现在它表示的是父类,所以它也只认识自己的成员变量。