📜  Java 静态绑定和动态绑定

📅  最后修改于: 2020-09-24 03:25:53             🧑  作者: Mango

静态绑定和动态绑定

将方法调用连接到方法主体称为绑定。

绑定有两种类型

  • 静态绑定(也称为早期绑定)。
  • 动态绑定(也称为后期绑定)。

了解类型

让我们了解实例的类型。

1)变量具有类型

每个变量都有一个类型,它可以是原始的也可以是非原始的。

"int data=30;  

这里的数据变量是int类型。

2)引用具有类型

"class Dog{  
 public static void main(String args[]){  
  Dog d1;//Here d1 is a type of Dog  
 }  
}  

3)对象具有类型

对象是特定java类的实例,但它也是其超类的实例

"class Animal{}  
  class Dog extends Animal{  
 public static void main(String args[]){  
  Dog d1=new Dog();  
 }  
}  

此处d1是Dog类的一个实例,但它也是Animal的一个实例。

静态绑定

当在编译时(由编译器)确定对象的类型时,称为静态绑定。

如果类中有任何私有,最终或静态方法,则存在静态绑定。

静态绑定示例

"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的实例也是Animal的实例,因此编译器不知道其类型,只知道其基本类型。