将方法调用连接到方法体称为绑定。
在java中有两种类型的绑定:
- 静态绑定(也称为早期绑定)。
- 动态绑定(也称为后期绑定)。
了解类型
下面让我们来了解实例的类型。
1. 变量有一个类型
每个变量都有一个类型,它可能是原始的和非原始的。
--- --------
这里的数据变量是一个int
类型。
2. 引用有一个类型
----- --- - ------ ------ ---- ----------- ------- - --- ----- ---- -- -- - ---- -- --- - -
2. 对象有一个类型
对象是特定的java
类的实例,但它也是其超类的实例。
----- ------ - - ----- --- ------- ------ - ------ ------ ---- ----------- ------- - --- -- - --- ------ - -
这里d1
是Dog
类的一个实例,但它也是Animal
的一个实例。
静态绑定
当编译时(由编译器)确定对象的类型时,它被称为静态绑定。如果在类中有任何private
,final
或static
方法,则有静态绑定。
静态绑定的示例
----- --- - ------- ---- ----- - ----------------------- -- ------------ - ------ ------ ---- ----------- ------- - --- -- - --- ------ --------- - -
动态绑定
当在运行时确定对象的类型时,它被称为动态绑定。
动态绑定的示例
----- ------ - ---- ----- - -------------------------- -- ------------ - - ----- --- ------- ------ - ---- ----- - ----------------------- -- ------------ - ------ ------ ---- ----------- ------- - ------ - - --- ------ -------- - -
执行上面示例代码输出结果如下 -
--- -- ---------
在上面的例子中,对象类型不能由编译器决定,因为Dog
的实例也是Animal
的一个实例。编译器不知道它的类型,只知道它的基类型。