我想知道静态/动态绑定和早期/晚期绑定之间是否有任何区别?
答案 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();
}
在这种情况下,在实际运行代码之前,编译器无法确定它。