将方法调用连接到方法体称为绑定。
在java中有两种类型的绑定:
- 静态绑定(也称为早期绑定)。
- 动态绑定(也称为后期绑定)。
静态绑定
当编译时(由编译器)确定对象的类型时,它被称为静态绑定。如果在类中有任何private
,final
或static
方法,则有静态绑定。
静态绑定的示例
class Dog {
private void eat() {
System.out.println("dog is eating...");
}
public static void main(String args[]) {
Dog d1 = new Dog();
d1.eat();
}
}
动态绑定
当在运行时确定对象的类型时,它被称为动态绑定。
动态绑定的示例
执行上面示例代码输出结果如下
class Animal { void eat() { System.out.println("animal is eating..."); } } class Dog extends Animal { void eat() { System.out.println("dog is eating..."); } public static void main(String args[]) { Animal a = new Dog(); a.eat(); } }
在上面的例子中,对象类型不能由编译器决定,因为dog is eating..
Dog
的实例也是Animal
的一个实例。编译器不知道它的类型,只知道它的基类型