java的动态绑定机制
文章目录
- Java重要特性:动态绑定机制
- 案例1(引入)
- 案例2(动态绑定机制-调用对象方法)
- 案例3(动态绑定机制-调用对象属性)
Java重要特性:动态绑定机制
案例1(引入)
public class DynamicBinding {public static void main(String[] args) {A a = new B();System.out.println(a.sum()); //40System.out.println(a.sum1()); //30}
}
class A {public int i = 10;public int sum(){return getl() + 10;}public int sum1(){return i + 10;}public int getl(){return i;}
}class B extends A{public int i = 20;public int sum(){return i + 20;}public int getl(){return i;}public int sum1(){return i + 10;}
}
A a = new B();是向上转型,调用方法看运行类型
a.sum()和a.sum1()分别输出40和30,这一点毫无疑问
案例2(动态绑定机制-调用对象方法)
如果把上述子类中的sum()注释掉,结果会有什么不同?
public class DynamicBinding {public static void main(String[] args) {A a = new B();System.out.println(a.sum());System.out.println(a.sum1());}
}
class A {public int i = 10;public int sum(){return getl() + 10;}public int sum1(){return i + 10;}public int getl(){return i;}
}class B extends A{public int i = 20;
// public int sum(){// return i + 20;
// }public int getl(){return i;}public int sum1(){return i + 10;}
}
这个时候a.sum()访问子类,发现子类中没有sum方法,再去访问父类,父类中有sum方法,调用的过程中getl()出现了分歧,父类和子类中都有getl(),该调用哪一个?
这里就体现出java的动态绑定机制
java的动态绑定机制
1.当调用对象方法的时候,该方法会和该对象的内存地址/运行类型绑定
2.当调用对象属性时,没有动态绑定机制,哪里声明,哪里使用
所以该案例中的a.sum()和a.sum1()分别输出30和30
案例3(动态绑定机制-调用对象属性)
接着把子类中的sum1()注销
public class DynamicBinding {public static void main(String[] args) {A a = new B();System.out.println(a.sum());System.out.println(a.sum1());}
}
class A {public int i = 10;public int sum(){return getl() + 10;}public int sum1(){return i + 10;}public int getl(){return i;}
}class B extends A{public int i = 20;
// public int sum(){// return i + 20;
// }public int getl(){return i;}
// public int sum1(){// return i + 10;
// }
}
根据案例2中对动态绑定机制的描述,很容易分析出
a.sum()和a.sum1()分别输出30和20
java的动态绑定机制相关推荐
- Java笔记013-IDEA、包、访问修饰符、封装、继承、多态、Super、方法重写/覆盖(override)、java的动态绑定机制
目录 面向对象编程(中级部分) IDE(集成开发环境)-IDEA IDEA介绍 IDE(集成开发环境)-Eclipse Eclipse介绍 IDEA的安装 IDEA的基本介绍和使用 创建一个java项 ...
- 【java】动态绑定机制
(1)当调用对象方法时,该方法会和该对象的内存地址/运行类型绑定. (2)当调用对象属性时,没有动态绑定机制,哪里声明,哪里使用.
- java的多态和动态绑定机制
什么是多态,多态具体体现在哪些方面? 多态:方法或者对象具有多挣形态,是OOP的第三大特征,是建立在封装和继承期初之上的多态具体表现, 1.方法多态 (1)重载体现多态, (2)重写体现多态 2.对象 ...
- Java动态绑定机制详解
关于 java 的动态绑定机制 聊一聊动态绑定机制, 相信看完这篇文章,你会对动态绑定机制有所了解. 网上大多一言概括: 当调用对象的时候,该方法会和该对象的内存地址/运行类型绑定. 当调用对象的属性 ...
- Java动态绑定机制的内幕
在Java方法调用的过程中,JVM是如何知道调用的是哪个类的方法源代码? 这里面到底有什么内幕呢? 这篇文章我们就将揭露JVM方法调用的静态(static binding) 和动态绑定机制(auto ...
- java 动态绑定原理_详解Java动态绑定机制的内幕(图)
在Java方法调用的过程中,JVM是如何知道调用的是哪个类的方法源代码? 这里面到底有什么内幕呢? 这篇文章我们就将揭露JVM方法调用的静态(static binding) 和动态绑定机制(auto ...
- JAVA多态的动态绑定机制
对于多态,大家基本上都很熟悉,日常开发用的也挺多,一句话概括:父类引用指向子类对象 在集合的使用上,List mList = new ArrayList<>(); 在类的继承时,Anim ...
- JAVA动态绑定机制
JAVA动态绑定机制(非常非常重要) JAVA动态绑定机制:动态绑定是与运行类型进行绑定 1.当调用对象方法的时候,该方法会和该对象的内存地址/运行类型(也就是与运行类型)绑定(意思就是如:有一个Ca ...
- java的动态绑定是什么意思_Java的动态绑定机制
Java的动态绑定又称为运行时绑定.意思就是说,程序会在运行的时候自动选择调用哪儿个方法. 一.动态绑定的过程: 例子: public class Son extendsFatherSon son = ...
最新文章
- sql server和mysql分页查询_sql server和mysql中分别实现分页功能
- 姗姗来迟的Serverless如何助力微服务和DevOps
- 【转】mysql,mysqli,PDO三种方式连接数据库
- jQuery 一次定时器_年薪百万之路--第五十一天 jQuery(上)
- 软件测试遇到的异常情况,豪之诺软件测试项目开发中遇到比较多的Bug总结
- 前端学习(1341):mongoose验证规则延伸
- 解析OpenShift的存储规划
- 云原生应用程序_什么是云原生应用程序?
- python3带tkinter窗口的ftp服务器,并使用pyinstaller打包成exe
- Objective-C中的单例模式
- 亚马逊平板刷机Linux系统,亚马逊平板刷机步骤是什么样的?
- Numpy安装、升级与卸载
- C# 合并多个PDF
- 360 极速模式 css,请问 chrome 和 360 极速模式 渲染页面不一样
- js日期加横杆_JS 替换日期的横杠为斜杠
- 关于滚动条内子控件控制问题
- Excel调用有道词典实现批量翻译
- js实现监听键盘的收起和弹出
- 【SolidWorks】模型状态显示设置介绍
- bp神经网络原理 实现过程,BP神经网络的实现包括
热门文章
- Squish简介——跨平台自动化GUI测试工具
- Checkm安装使用教程
- 传奇手游腾讯服务器和微信哪个好,传奇手游:对于传奇老玩家来说,玩的是氪金PK还是坚持情怀?...
- 谈谈CListCtrl 扩展风格设置方法-SetExtendedStyle和ModifyStyleEx 比較
- STM32 USART—串口通信
- int转String(精)
- Zotero插件Zotfile下载与安装
- 计算机函授本科学制,成人高考函授本科是什么,函授本科要多久毕业?函授学制是几年的?...
- codepen_CodePen技巧和最佳实践
- 从入门到冠军 中国移动人群画像赛TOP1经验分享