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;
//    }
}
相关推荐
aaaameliaaa34 分钟前
字符函数和字符串函数
c语言·笔记·算法
圆山猫1 小时前
[Virtualization](四):Linux KVM/RISC-V 的 vCPU 运行路径
java·linux·risc-v
微学AI2 小时前
一根针指向所有方向:挂谷猜想对 LLM Agent 技能-记忆架构的启示
开发语言·人工智能·架构·挂谷猜想
城管不管2 小时前
ReAct、Plan-and-Execute、Reflection 三大智能 Agent 范式核心区别
java·人工智能·算法·spring·ai·动态规划
IT小白杨2 小时前
从环境制备到自动化工作流:多账号运营的工程化架构拆解
java·经验分享·自动化·安全架构·指纹浏览器
月疯2 小时前
二分法算法(水平等分图形面积)
算法
豆瓣鸡2 小时前
算法日记 - Day3
java·开发语言·算法
白白白小纯2 小时前
算法篇—反转链表
c语言·数据结构·算法·leetcode
萧瑟余晖2 小时前
Java深入解析篇九之NIO详解
java·网络·nio
Achou.Wang3 小时前
深入理解go语言-第5章 并发编程——Go的灵魂
大数据·算法·golang