A:成员变量。
编译看左边:如果将子类向上转型( Fu fu = new Zi()),而子类中有特有的成员变量(父类中没有),并且还调用了它,代码在编译时会报错
运行看左边:如果父类子类中都有同一种成员变量,运行时程序使用的是父类中成员变量的值.
原因:实例化以后,子类已经提升为父类型了,所以找的是父类的成员变量.
B成员方法:编译看左边:代码在编译时会查看你调用的方法在父类中是否存在,不存在即报错
运行看右边:程序在运行时,调用的是子类的方法.原因:其创建的对象fu,指向的时Zi,所以调用时先去寻找的是子类的方法.
--
其实还有一个成员静态方法:和成员变量一样.编译和运行都参考左边.
|