Java静态绑定和动态绑定
1 什么静态绑定和动态绑定
将方法调用连接到方法主体称为绑定。
绑定有两种类型:
静态绑定(也称为早期绑定)。
动态绑定(也称为后期绑定)。
2 了解不同的类型
让我们了解不同的类型。
2.1 变量类型
每个变量都有一个类型,它可以是原始的也可以是非原始的。
int data=30;
这里的data变量是int类型。
2.2 引用类型
class Dog{
public static void main(String args[]){
Dog d1;//d1是Dog引用类型
}
}
2.3 对象类型
对象是特定Java类的实例,但它也是其父类的实例。
class Animal{}
class Dog extends Animal{
public static void main(String args[]){
Dog d1=new Dog();
}
}
此处d1是Dog类的一个实例,但它也是Animal的一个实例。
3 静态绑定
当在编译时(由编译器)确定对象的类型时,称为静态绑定。
如果类中有任何private,final或static方法,则存在静态绑定。
3.1 静态绑定的示例
/**
* 一点教程网 - http://www.yiidian.com
*/
//静态绑定的示例
class Dog{
private void eat(){
System.out.println("狗在吃东西...");
}
public static void main(String args[]){
Dog d1=new Dog();
d1.eat();
}
}
输出结果为:
狗在吃东西...
4 动态绑定
在运行时确定对象的类型时,称为动态绑定。
4.1 动态绑定的示例
/**
* 一点教程网 - http://www.yiidian.com
*/
//动态绑定的示例
class Animal{
void eat(){
System.out.println("动物在吃东西...");
}
}
class Dog extends Animal{
void eat(){
System.out.println("狗在吃东西...");
}
public static void main(String args[]){
Animal a=new Dog();
a.eat();
}
}
输出结果为:
狗在吃东西...
在上面的示例中,编译器无法确定对象类型,因为Dog的实例也是Animal的实例,因此编译器不知道其类型,只知道其基本类型。