java动态绑定机制

规则

  1. 调用对象方法时,该方法会和对象的运行类型绑定。
  2. 调用对象属性时,没有动态绑定机制,哪里声明哪里使用。

例子:

java 复制代码
class Base{
    public int a=10;
    public int getA(){return a;}
    public int getSum(){
        return 10+getA();//这里会调用Sub类中的getA()
    }
    public int getBaseA(){return a;}
}
class Sub extends Base{
    public int a =20;
    public int getA(){return a;}
}

public static void main(String[] args){
        Base b=new Sub();//多态
        System.out.println(b.getSum()); //规则1  输出30
        System.out.println(b.getBaseA());//规则2 输出10
    }

规则1:

最后的输出为 30。

因为动态绑定机制的原因,b.getSum()方法与b的运行类型(Sub)绑定,b.getSum()中调用的getA()实际为Sub类中的getA(),即10+20最终返回30。

规则2:

在调用b.getBaseA()时,因为变量没有动态绑定,所以直接找到了Base类中的a=10,所以输出为10。

相关推荐
yyt3630458412 分钟前
Maven 命令构建成功但 IDEA 构建失败原因解析
java·maven·intellij-idea
krafft4 分钟前
从零入门 Spring AI,详细拆解 ChatClient 调用流程和 Advisor 底层原理,小白可入!
java·spring·ai
j***82707 分钟前
Spring 中集成Hibernate
java·spring·hibernate
g***96908 分钟前
springboot设置多环境配置文件
java·spring boot·后端
Jtti12 分钟前
PHP项目缓存占用硬盘过大?目录清理与优化
java·缓存·php
catchadmin14 分钟前
使用 PHP 和 Raylib 也可以开发贪吃蛇游戏
开发语言·游戏·php
未若君雅裁41 分钟前
JVM基础总结
java·jvm·java-ee
p***43481 小时前
JavaScript数据分析实战
开发语言·javascript·ecmascript
星释1 小时前
Rust 练习册 66:密码方块与文本加密
java·前端·rust
q***31891 小时前
Spring Boot 实战篇(四):实现用户登录与注册功能
java·spring boot·后端