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。

相关推荐
!停1 分钟前
数据结构空间复杂度
java·c语言·算法
lead520lyq2 分钟前
Golang GPRC流式传输案例
服务器·开发语言·golang
她说..3 分钟前
验签实现方案整理(签名验证+防篡改+防重放)
java·经验分享·spring boot·java-ee·bladex
xyq20243 分钟前
《C 经典100例》
开发语言
不染尘.5 分钟前
二分算法(优化)
开发语言·c++·算法
只是懒得想了5 分钟前
Go语言ORM深度解析:GORM、XORM与entgo实战对比及最佳实践
开发语言·数据库·后端·golang
不吃橘子的橘猫6 分钟前
Verilog HDL基础(概念+模块)
开发语言·学习·算法·fpga开发·verilog
lly2024068 分钟前
JavaScript 闭包详解
开发语言
爱吃山竹的大肚肚8 分钟前
异步导出方案
java·spring boot·后端·spring·中间件
彩妙不是菜喵10 分钟前
STL精讲:list容器
开发语言·c++