首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >动态绑定机制

动态绑定机制

作者头像
Miloce
发布2022-09-28 11:07:16
发布2022-09-28 11:07:16
8900
举报
文章被收录于专栏:JoyJoy

动态绑定机制

java的动态绑定机制:

  1. 当调用对象方法的时候,该方法会和该对象的内存地址/运行类型绑定
  2. 当调用对象属性时,没有动态绑定机制,在哪个类中声明就用哪个类中的属性;

代码示例:

代码语言:javascript
复制
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;
//    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 动态绑定机制
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档