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。

相关推荐
techdashen28 分钟前
Cloudflare 如何把一个大型代理拆成三个小服务来提升可靠性
开发语言·rust
geovindu40 分钟前
go: Chain of Responsibility Pattern
开发语言·设计模式·golang·责任链模式
十五年专注C++开发1 小时前
WaitingSpinnerWidget: 一个高度可配置的自定义Qt等待加载动画组件
开发语言·c++·qt·waitingspinner
Java小生不才1 小时前
spring AI文生图
java·人工智能·spring ai
苍煜1 小时前
ThreadPoolExecutor线程池终极全解:同步异步判定+SpringBoot生产实战
java·开发语言·spring boot
fengfuyao9852 小时前
EWT(经验小波变换)MATLAB实现与应用
开发语言·matlab
c++之路2 小时前
C++ 动态内存
java·jvm·c++
MasonYyp6 小时前
基于Python可定制开发的智能体框架
开发语言·python
2301_800976936 小时前
数据库的基本操作后续
java·数据库·sql
SECS/GEM6 小时前
SECS/GEM如何实现越南现场自定义消息
java·服务器·数据库