多态:Fu fu = new ZI()
这样一个简单例子都很熟悉,为什么会出现调用函数是子类,而成员变量是父类呢?
下面说一下我自己的见解:编译时期,栈中存的引用是父类,因此调用方法与变量时只能调用父类的,不能调用子类独有的,因为java认为它现在是父类,到了运行时,fu这个引用存的地址指向子类这个对象,所以在调用时调用的是子类的函数(如果被覆盖了),可是这么说来调用变量时变量应该是子类的啊,其实变量并不能够覆盖,所以java只知道我们要调用父类的成员,并不知道调用子类,因此,成员变量调用父类。