将方法调用与方法体关联起来被称为绑定。

在Java中,有两种类型的绑定:

  1. 静态绑定(也称为早期绑定):在编译时确定方法的调用。
  2. 动态绑定(也称为后期绑定):在运行时根据实际对象类型确定方法的调用。

理解类型

让我们来了解一下对象的类型。

1)变量具有类型

每个变量都有一个类型,它可以是原始类型或引用类型。

int data=30;  

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

2)引用有一个类型

class Dog{  
 public static void main(String args[]){  
  Dog d1;//这里d1是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("狗正在吃东西");}  
  
 public static void main(String args[]){  
  Dog d1=new Dog();  
  d1.eat();  
 }  
}  

动态绑定

当对象的类型在运行时确定时,称为动态绑定。

动态绑定示例

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 的实例。所以编译器不知道它的类型,只知道它的基类型。

标签: java, Java面试题, Java下载, java教程, java技术, Java学习, Java学习教程, Java语言, Java开发, Java入门教程, Java进阶教程, Java高级教程, Java笔试题, Java编程思想