多态--成员变量、成员函数、静态函数

 
 多态后,继承的成员又变成什么样了?

图片

 

 

图片

 

 一、成员变量:参考等号左边的父类的数据类型
 

图片

 【】开发中不会出现,会出现在面试

 

?????如何从内存角度理解?????

 【】

图片

 【】结果是f.num指向父类3,打印出3

 

【】如果不考虑多态,建立zi类型变量和对象,

打印num会首先找子类的num,子类找不到再去找父类的num,因为父类num已经被zi继承

 
 
 二、成员函数:编译参考左边父类,运行参考右边子类

图片

 【】f变量指向zi对象,调用的是zi对象的函数

 

图片

 

 
 三、静态函数:看左侧引用类型

【】非静态方法由对象完成调用,所以依赖对象。

【】静态方法直接绑定在类上,各自进入方法区的静态区。

静态方法不依赖于对象,依赖于引用。什么类型调用我,我就运行那个类型的静态方法。

 【】静态方法不涉及多态性。对象的多态性,静态方法不需要建立对象,直接用类名调用。
 

图片

 

 

 总结:多态中,父类引用指向子类对象。

只有非静态函数和子类有关,(类型提升限制子类特有函数使用)

成员属性、静态函数都使用父类的。(父类引用指向父类的成员属性和父类的静态函数)

 多态是方法的多态,父类引用只指向子类的方法,

不是属性的多态,也不是静态函数的多态。父类引用还是使用父类的属性和静态函数。

posted @ 2025-09-10 19:33  ibddindonon  阅读(9)  评论(0)    收藏  举报