动态绑定==是否为Java中的后期绑定?
在不同的来源中,我读到了关于这个话题的不同的东西。例如,维基百科说: 后期绑定通常与动态调度相混淆,但两者之间存在显著差异 但是几行之后 在Java编程中,使用术语后期绑定作为动态调度的同义词是很流行的。具体来说,这是指Java与虚拟方法一起使用的单一分派机制动态绑定==是否为Java中的后期绑定?,java,oop,polymorphism,Java,Oop,Polymorphism,在不同的来源中,我读到了关于这个话题的不同的东西。例如,维基百科说: 后期绑定通常与动态调度相混淆,但两者之间存在显著差异 但是几行之后 在Java编程中,使用术语后期绑定作为动态调度的同义词是很流行的。具体来说,这是指Java与虚拟方法一起使用的单一分派机制 那么,真相在哪里?这种“显著的差异”是什么呢?后期绑定和动态单次分派在所有意图和目的上都是相同的。在DynamicSingleDispatch中,单个对象的值或标识决定了在运行时调用哪些代码,而Java中就是这样 术语动态调度通常用于表示
那么,真相在哪里?这种“显著的差异”是什么呢?后期绑定和动态单次分派在所有意图和目的上都是相同的。在DynamicSingleDispatch中,单个对象的值或标识决定了在运行时调用哪些代码,而Java中就是这样
术语动态调度通常用于表示动态多重调度,即在运行时根据多个对象的标识或值选择运行时方法,这是CLOS和Smalltalk中的语言功能,但不是java或C++。你指的是懒惰的加载吗?@ BMRAN:不,他在说一个更基本的语言水平的东西。参见和+1,但我将“后期绑定”的特性描述为Python语言的完全晚绑定调用,而java的动态单调度模型实际上是部分早期的、部分后期绑定,更像C++虚拟方法。我假设java 7中添加的调用动态执行动态调度。“有什么区别吗?”丹尼尔普赖登——的确,我同意这一点。你所谓的“完全迟到”,我称之为“鸭子打字”;这基本上是基于方法的查找,而不是基于类型的查找。@PeterLawrey--是的,这是“duck-typing”。它能够在运行时发送消息,而不需要对收件人的类型有任何要求。Java语言本身不包含这个概念,但Java 7 JVM确实支持它(Java现在通过API类的反射来弱支持它。)@ErnestFriedman Hill:是的,我认为“后期绑定”(完全意义上)和“鸭子类型”基本上是一样的。我对它们唯一的区别是,我认为“后期绑定”是一种语言特性,而“duck-typing”是一种更抽象的东西,基本上只是一种编程思维。但我承认那是一个很好的发型。