因为Zi继承了Fu,所以new Zi包括的东西要多于new Fu,也可以说是new Zi 包括 newFu,那不是应该是
Zi z = new Fu;
如果是 Zi z = new Fu; Fu.方法可能是Zi的方法而父没有,从而导致错误
父类引用可以指向子类对象,
左边Fu f是定义了一个叫f的父类型变量,在栈中开辟了一个空间
栈中的变量名是父类类型的,因而去堆中找对应地址值时只找父类类型
所以在编译时无论成员变量、成员函数、静态函数全部看左边
而运行时由于子类的成员函数动态绑定,所以才会运行子类的方法。
父类比子类更抽象,因此更加通用,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作 |
|