- 多态情况下,父类的引用调用和子类同名的普通成员变量,使用的是父类自己的成员变量
- 多态情况下,父类的引用调用和子类同名的普通成员方法,使用的是子类自己的成员方法
- 多态情况下,父类的引用调用和子类同名的静态成员方法,使用的是父类的静态成员方法
- 多态情况下,父类的引用不能调用子类特有的成员变量。
参考https://bbs.csdn.net/topics/391822759
总结就是,成员变量是静态类型决定的,其实就是在堆中有了2个一样名字的成员变量,根据静态类型就可以决定了。成员方法是方法区的一张虚表决定的,虚表中指向的方法在构建子类对象时会被改变为子类的方法。