温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java动态绑定与静态绑定区别

发布时间:2026-10-26 12:22:03 来源:亿速云 阅读:96 作者:小樊 栏目:编程语言

在 Java 中,绑定(Binding)指的是方法调用与方法实现之间的关联过程。根据绑定发生的时间,可分为静态绑定(早绑定)和动态绑定(晚绑定)。


一、静态绑定(Static Binding / Early Binding)

定义:在编译期就确定调用哪个方法。

特点

  • 发生在编译阶段
  • 效率高
  • 不支持多态

常见情况

  1. static 方法
  2. final 方法
  3. private 方法
  4. 构造方法
  5. 重载(overload)方法

示例

class A {
    static void show() {
        System.out.println("A");
    }
}

class B extends A {
    static void show() {
        System.out.println("B");
    }
}

A a = new B();
a.show(); // 输出 A(静态绑定,看引用类型)

二、动态绑定(Dynamic Binding / Late Binding)

定义:在运行期根据对象的实际类型确定调用哪个方法。

特点

  • 发生在运行阶段
  • 支持多态
  • 是 Java 面向对象的核心机制

常见情况

  • 方法重写(override)
  • 通过父类引用调用子类对象的方法

示例

class A {
    void show() {
        System.out.println("A");
    }
}

class B extends A {
    void show() {
        System.out.println("B");
    }
}

A a = new B();
a.show(); // 输出 B(动态绑定,看实际对象)

三、核心区别对比

对比点 静态绑定 动态绑定
发生时间 编译期 运行期
依据 引用类型 实际对象类型
是否支持多态 否 是
性能 高 略低
常见场景 static / final / private / 重载 方法重写

四、一句话总结

静态绑定看“类型”,动态绑定看“对象”。

如果你愿意,我也可以结合 JVM 方法调用(invokevirtual / invokestatic)来讲得更底层一些。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手