Java静态绑定和动态绑定

1 什么静态绑定和动态绑定

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

绑定有两种类型:

  1. 静态绑定(也称为早期绑定)。
  2. 动态绑定(也称为后期绑定)。

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

热门文章

优秀文章