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。

相关推荐
Albert Edison3 小时前
【Python】学生管理系统
开发语言·数据库·python
追随者永远是胜利者5 小时前
(LeetCode-Hot100)253. 会议室 II
java·算法·leetcode·go
宇木灵5 小时前
C语言基础-十、文件操作
c语言·开发语言·学习
追随者永远是胜利者5 小时前
(LeetCode-Hot100)207. 课程表
java·算法·leetcode·go
云泽8086 小时前
C++ 多态入门:虚函数、重写、虚析构及 override/final 实战指南(附腾讯面试题)
开发语言·c++
yanghuashuiyue7 小时前
lambda+sealed+record
java·开发语言
盟接之桥7 小时前
盟接之桥EDI软件:API数据采集模块深度解析,打造企业数据协同新引擎
java·运维·服务器·网络·数据库·人工智能·制造
yzx9910137 小时前
Python数据结构入门指南:从基础到实践
开发语言·数据结构·python
HoneyMoose8 小时前
Spring Boot 2.4 部署你的第一个 Spring Boot 应用需要的环境
java
皮皮林5518 小时前
为什么 Spring 和 IDEA 都不推荐使用 @Autowired 注解??
java