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;
//    }
}
相关推荐
多米Domi01115 分钟前
0x3f 第49天 面向实习的八股背诵第六天 过了一遍JVM的知识点,看了相关视频讲解JVM内存,垃圾清理,买了plus,稍微看了点确定一下方向
jvm·数据结构·python·算法·leetcode
饺子大魔王的男人15 分钟前
Remote JVM Debug+cpolar 让 Java 远程调试超丝滑
java·开发语言·jvm
兩尛6 小时前
c++知识点2
开发语言·c++
fengfuyao9856 小时前
海浪PM谱及波形的Matlab仿真实现
开发语言·matlab
xiaoye-duck7 小时前
C++ string 底层原理深度解析 + 模拟实现(下)——面试 / 开发都适用
开发语言·c++·stl
Hx_Ma168 小时前
SpringMVC框架提供的转发和重定向
java·开发语言·servlet
期待のcode8 小时前
原子操作类LongAdder
java·开发语言
舟舟亢亢9 小时前
Java集合笔记总结
java·笔记
A_nanda9 小时前
c# MOdbus rto读写串口,如何不相互影响
算法·c#·多线程
小酒窝.9 小时前
【多线程】多线程打印ABC
java