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。

相关推荐
4***V202几秒前
Vue3响应式原理详解
开发语言·javascript·ecmascript
q***98522 分钟前
VS Code 中如何运行Java SpringBoot的项目
java·开发语言·spring boot
帧栈12 分钟前
开发避坑指南(72):HttpHeaders 的add()方法和set()方法有什么区别?
java·spring·http
共享家952715 分钟前
QT-界面优化(中)
开发语言·qt
李日灐21 分钟前
手搓简单 string 库:了解C++ 字符串底层
开发语言·c++
unclecss26 分钟前
把 Spring Boot 的启动时间从 3 秒打到 30 毫秒,内存砍掉 80%,让 Java 在 Serverless 时代横着走
java·jvm·spring boot·serverless·graalvm
say_fall30 分钟前
C语言编程实战:每日一题 - day7
c语言·开发语言
tuokuac31 分钟前
@PathVariable与@RequestParam
java·spring
q***160838 分钟前
Tomcat的server.xml配置详解
xml·java·tomcat
程序员西西38 分钟前
SpringBoot整合Apache Spark实现一个简单的数据分析功能
java·后端