多态的动态绑定
来源:互联网 发布:淘宝有名片设计吗 编辑:程序博客网 时间:2024/06/02 17:34
1.多态中的成员变量
/** * 多态 动态绑定 * * @author wql * */class Fu { int num = 3;}class Zi extends Fu { int num = 4; //这里并不是覆盖,变量不存在覆盖}public class Demo { public static void main(String[] args) { Fu f = new Zi(); //向上转型 System.out.println(f.num); }}
运行结果
3
在多态中的成员变量:
编译时:参考引用变量所属的类中是否有调用的成员变量,若有、编译成功,若无、编译失败(父类不可以调用子类特有的成员变量)
运行时:参考引用变量所属的类中是否有调用的成员变量,并运行该所属类中的成员变量
简单说:编译和运行都参考等号左边
2.多态中的成员函数
class Fu { void show(){ System.out.println("fu...show"); }}class Zi extends Fu { void show(){ System.out.println("zi...show"); }}public class Demo { public static void main(String[] args) { Fu f = new Zi(); //向上转型 f.show(); //此时父类带有的引用地址是子类对象在堆中的地址,当其调用函数方法时,会优先考虑子类对象中的,这就是动态绑定 }}
运行结果
zi…show
在多态中的成员函数:
编译时:参考引用变量所属的类中是否有调用的函数,若有、编译成功,若无、编译失败(父类不可以调用子类特有的函数方法)
运行时:参考对象所属的类中是否有调用的成员函数,若有、并运行该成员函数,若无,则通过super();去调用父类中该成员函数
简单说:编译参考等号左边,运行都参考等号右边
3.
class Fu { static void show(){ System.out.println("fu..static..show"); }}class Zi extends Fu { static void show(){ System.out.println("zi..static..show"); }}public class Demo2 { public static void main(String[] args) { Fu f = new Zi(); //向上转型 //静态函数方法有些特殊,其实静态函数并不需要对象来调用,直接用类名调用即可,因为它并不存在于内存的堆中,是在内存的方法区中,当多态子类去调用时,会优先考虑父类 f.show(); }}
运行结果
fu..static..show
在多态中的静态方法:
编译时:参考引用变量所属的类中是否有调用的静态方法,若有、编译成功,若无、编译失败(父类不可以调用子类特有的静态方法)
运行时:参考引用变量所属的类中是否有调用的静态方法,并运行该方法
简单说:编译运行都参考等号左边
之前转载过别人写的类似文章(http://blog.csdn.net/qq_36330228/article/details/76695401),随着学习觉得自己也有些理解,便在此分享下,不足之处,望指出,一起交流
阅读全文
4 0
- 多态的动态绑定
- 多态的静态绑定和动态绑定
- Java的多态(静态绑定和动态绑定)
- 类的多态,动态类型,动态绑定
- 多态与动态绑定
- 多态和动态绑定
- 动态绑定和多态
- 动态绑定和多态
- 动态绑定和多态
- 多态和动态绑定
- 动态绑定的多态的实现原理
- java多态的静态绑定和动态绑定的理解
- Java多态和动态绑定是如何实现的
- ReportViewer的动态绑定
- 动态绑定的关键
- Java的动态绑定
- 动态绑定的例子
- java的动态绑定
- java NIO 之fileChannel
- KCF
- Visual Studio 2017 Enterprise 和Professional 激活码
- CIFS,NFS
- 百度之星1006度度熊的01世界
- 多态的动态绑定
- c语言初步经典题9--分离浮点数的整数和小数
- 如何将PCB边角从直角改为弧形 1
- 平衡树(摘自各种材料)(2577 Vojnici)
- mongodb 速成笔记
- Java 邮件发送功能
- docker设置centos容器支持
- bzoj2301 莫比乌斯反演
- RMI(Remote method invoke)详解