Java的动态绑定机制(重要)

动态绑定机制说明:

1.当调用对象方法时,该方法会和该对象的内存地址(运行类型)绑定

2.当调用对象属性时,没有对象绑定机制,哪里声明,哪里使用

源代码:

java 复制代码
public class DynamicBinding {
    public static void main(String[] args) {
        A a = new B();
        System.out.println(a.sum());//40
        System.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;
    }
}

当把B类中的sum()注销掉,再去执行System.out.println(a.sum())

此时结果为30

java 复制代码
public class DynamicBinding {
    public static void main(String[] args) {
        A a = new B();
        //当调用对象方法时,该方法会和该对象的内存地址(运行类型)绑定
        //也就是说,调用的对象是哪个类型,就去找这个类型中的方法
        System.out.println(a.sum());//30
        //当执行到a.sum()中的return getl() + 10时,由于运行类型是B,所以会去调用B类中的
        //getl()方法,此时return i;返回的是B中的i值
        
        System.out.println(a.sum1());//当调用对象属性时,没有对象绑定机制,哪里声明,哪里使用
        //属性没有对象绑定机制,输出20
    }
}
class A{//父类
    public int i = 10;
    public int sum(){
        return getl() + 10;//20+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;
//    }
}
相关推荐
南极星1005几秒前
我的创作纪念日--128天
java·python·opencv·职场和发展
前端小菜袅1 分钟前
PC端原样显示移动端页面方案
开发语言·前端·javascript·postcss·px-to-viewport·移动端适配pc端
Highcharts.js2 分钟前
如何使用Highcharts SVG渲染器?
开发语言·javascript·python·svg·highcharts·渲染器
We་ct2 分钟前
LeetCode 228. 汇总区间:解题思路+代码详解
前端·算法·leetcode·typescript
郝学胜-神的一滴7 分钟前
超越Spring的Summer(一): PackageScanner 类实现原理详解
java·服务器·开发语言·后端·spring·软件构建
AIpanda8887 分钟前
如何借助AI销冠系统提升数字员工在销售中的成效?
算法
啊阿狸不会拉杆8 分钟前
《机器学习导论》第 7 章-聚类
数据结构·人工智能·python·算法·机器学习·数据挖掘·聚类
摇滚侠8 分钟前
Java,举例说明,函数式接口,函数式接口实现类,通过匿名内部类实现函数式接口,通过 Lambda 表达式实现函数式接口,演变的过程
java·开发语言·python
阿里嘎多学长9 分钟前
2026-02-03 GitHub 热点项目精选
开发语言·程序员·github·代码托管
Tony Bai10 分钟前
“Go 2,请不要发生!”:如果 Go 变成了“缝合怪”,你还会爱它吗?
开发语言·后端·golang