Java静态绑定和动态绑定

Java静态绑定和动态绑定


将方法调用连接到方法体称为绑定。也就是通过调用方法连接到具体的方法体。
Java两种绑定模式
首先了解一下变量和类型
每个基本变量都会有个类型

int a =1;double b = 1;

这里变量a的类型是int,b的变量是double类型
每一个变量也会有一个类型

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

d1 的类型是Dog
当方法当编译时(由编译器)确定对象的类型时,它被称为静态绑定。如果在类中有任何private,final或static方法,则有静态绑定。

静态绑定

能由编译器确定对象的类型时,它被称为静态绑定。如果在类中有任何private,final或static方法,则有静态绑定,因为他们都不能被重写。不存在多态。

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 is eating...

这个由虚拟机运行时,动态选择执行的方法称为动态绑定。而编译器不能决定。

猜你喜欢

转载自blog.csdn.net/weixin_43101144/article/details/84872559