在 Java 中,**动态绑定(Dynamic Binding)和多态(Polymorphism)**是紧密相关的概念,可以说:多态的实现依赖于动态绑定。
下面从概念、原理和关系三个层面说明。
多态是指:
同一个方法调用,在不同对象上表现出不同的行为。
Java 中多态通常体现在:
示例:
class Animal {
void sound() {
System.out.println("Animal sound");
}
}
class Dog extends Animal {
void sound() {
System.out.println("Dog bark");
}
}
class Cat extends Animal {
void sound() {
System.out.println("Cat meow");
}
}
public class Test {
public static void main(String[] args) {
Animal a1 = new Dog();
Animal a2 = new Cat();
a1.sound(); // Dog bark
a2.sound(); // Cat meow
}
}
**动态绑定(运行时绑定)**是指:
方法调用在程序运行时,根据对象的实际类型来决定调用哪个方法,而不是引用类型。
Java 中:
示例说明:
Animal a = new Dog();
a.sound();
a 的编译时类型是 Animala 的运行时类型是 DogDog,调用 Dog.sound()✅ 多态是现象,动态绑定是机制
| 概念 | 作用 |
|---|---|
| 继承 / 实现接口 | 多态的前提 |
| 方法重写 | 多态的表现 |
| 动态绑定 | 多态的实现机制 |
以下情况是静态绑定(编译期确定):
static 方法final 方法private 方法示例:
class Parent {
int x = 10;
}
class Child extends Parent {
int x = 20;
}
Parent p = new Child();
System.out.println(p.x); // 10(静态绑定)
Java 的多态是通过动态绑定实现的,动态绑定让方法调用在运行时根据对象真实类型执行,从而表现出多态行为。
如果你愿意,我也可以从 JVM 角度(虚方法表)或面试题角度再讲一层。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。