动态绑定机制
动态绑定机制
java的动态绑定机制:
- 当调用对象方法的时候,该方法会和该对象的内存地址/运行类型绑定;
- 当调用对象属性时,没有动态绑定机制,在哪个类中声明就用哪个类中的属性;
代码示例:
package com.hspedu.poly_.dynamic_; /** * @author gaoqinghui * @date 2022/4/15 15:31 * java的动态绑定机制 * 1.当调用对象方法时,该方法会和该对象的内存地址/运行类型绑定 * 2.当调用对象属性时,没有动态绑定机制,哪里声明,哪里使用 */ public class DynamicBinding { public static void main(String[] args) { //A是a的编译类型,B是a的运行类型 A a = new B(); //解释:当调用a.sum()时,我们的运行内存是B,首先会去子类中寻找看是否有sum方法,这时我们把子类中的sum方法注释了,根据继承关系,会继续向上寻找父类看是否有sum这个方法,这时父类A中有sum这个方法,调用这个方法后,返回的时geti() + 10,根据动态绑定机制,这时会根据我们a的运行内存去寻找这个geti()方法,a的运行类型时B,就去B中找是否有geti(),这时找到,返回i,因为返回i是属性,属性没有动态绑定机制,返回的就是就是B类中定义的i,也就是20,然后返回父类,结果为30; System.out.println(a.sum()); System.out.println(a.sum1()); } } class A { public int i = 10; public int sum(){ return geti() + 10; } public int sum1(){ return i + 10; } public int geti(){ return i; } } class B extends A { //子类 public int i = 20; // public int sum(){ // return i + 20; // } public int geti(){ return i; } // public int sum1(){ // return i + 10; // } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术