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。

相关推荐
哈哈老师啊13 分钟前
Springboot就业管理系统bk5uv(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
java·spring boot·spring
chao18984413 分钟前
基于C#实现Modbus通信及CRC校验
java·开发语言·c#
hunjinYang14 分钟前
源码配置——基于Gradle搭建spring-framework-6.2.15版本阅读环境
java·后端·spring
编程饭碗16 分钟前
【Spring全局异常处理 早抛晚捕】
java·数据库·spring
咸鱼2.018 分钟前
【java入门到放弃】Elasticsearch概念
java·elasticsearch·jenkins
hxjhnct27 分钟前
JavaScript Promise 的常用API
开发语言·前端·javascript
xiaowu08038 分钟前
C# 嵌入资源加载 + 外部配置文件的兜底配置
开发语言·c#
毕设源码-邱学长39 分钟前
【开题答辩全过程】以 基于JSP论坛系统设计与实现为例,包含答辩的问题和答案
java·开发语言
找不到、了40 分钟前
系统常用的限流方案实践
java
FAFU_kyp1 小时前
Rust 语法速查
开发语言·后端·rust