静态绑定和动态绑定之间的差异

时间:2016-02-22 11:14:02

标签: oop

我想知道静态/动态绑定和早期/晚期绑定之间是否有任何区别?

1 个答案:

答案 0 :(得分:0)

据我所知,它们基本上是指代相同概念的不同方式。

给出一个像这样的简单层次结构:

class Phone {
    ...
}

class iPhone extends Phone {
    public boolean isExpensive() {
         return true;
    }
}

class Wileyfox extends Phone {
    public boolean isExpensive() {
         return false;
    }
}

早期/静态绑定是在编译时调用类型和类型方法的时候:

iPhone phone = new iPhone();
phone.isExpensive();

在这里调用isExpensive()方法时,编译器已经知道它需要在编译时将类型iPhone绑定到phone变量。

延迟/动态绑定是指编译器无法确定谁将在编译时调用,但是在运行时:

public boolean canAfford(Phone phone) {
    return !phone.isExpensive();
}

在这种情况下,在实际运行代码之前,编译器无法确定它。