运行时动态绑定和类继承之间的区别

ming.kernel:

我试图阐明动态语言(Python,ruby)和静态类型语言(java,C ++)中运行时动态绑定和类继承的概念。我不确定我是否正确。

在像Python和Ruby这样的动态语言中,运行时动态绑定是作为鸭子类型实现的。当解释器检查对象的类型时,它检查对象是否具有特定的方法(或行为),而不是检查对象的类型;运行时动态绑定并不意味着类继承。类继承只是减少了Python和Ruby中的代码复制。

在Java和C ++等静态类型的语言中,仅类继承可以获取运行时动态绑定。类继承不仅在此处减少了代码复制,而且还用于实现运行时动态绑定。

总之,类继承和运行时动态绑定是两个不同的概念。在Python和Ruby中,它们完全不同。在Java和C ++中,它们混合在一起。

我对吗?

大卫·W:

您是正确的,因为运行时动态绑定在概念上与类继承完全不同。

但是,当我重新阅读您的问题时,我认为我不会同意“ Java和C ++,运行时动态绑定是作为类继承实现的”。类继承只是对更广泛行为的定义,其中包括来自现有类的现有行为。此外,运行时绑定不一定与面向对象有关。它只能指延迟的方法解析。

类继承是指对象的构建方式的“模板”,具有连续子类的行为越来越细化。运行时动态绑定仅是表示将对方法(例如)的引用推迟到执行时的一种方式。在给定的语言中,特定的类可以利用运行时动态绑定,但是在编译已解析继承的类

简而言之,继承是指对象定义蓝图从最基本的意义上讲,运行时动态绑定只是一种在执行时解决方法调用的机制。

编辑我确实需要澄清一点:Java在覆盖的类方法上实现动态绑定,而C ++在运行时通过多态性确定类型,因此我不能说动态绑定与类继承“没有关系”是不准确的。在一个“宏”级别,它们并不是固有相​​关的,但是给定的语言可能会在其继承机制中利用它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

核心 Composer 运行时和 Composer 平台运行时之间的区别?

在运行时更改继承类

PHP 运行时动态绑定变量

是否可以从仅在python运行时已知的类动态继承?

在运行时动态创建类

Gradle中编译和运行时配置之间的区别

lambda和方法引用在运行时级别之间有什么区别?

SELECT *和SELECT显式列之间在运行时间上有区别吗?

加载程序和C运行时初始化的角色之间的区别

Kubernetes中的驱动程序和容器运行时之间有什么区别?

我可以从运行时选择的OCaml类继承吗?

UWP的类库和Windows运行时组件有什么区别

Service Fabric SDK与运行时之间的区别

基类库和Asp.net运行时之间没有关系

在运行时从protobuf文件动态创建python类?

如何在Java运行时创建动态类

动态类加载时的运行时注释扫描

PHP 类在运行时动态扩展

类装饰器和继承类之间的区别

运行时重新绑定和重新注入实例

关于填充和继承,类和结构之间的区别

在运行时期间,操作的优先级和执行顺序之间有区别吗?

Apache CXF运行时JAX RS前端和'javax.ws.rs'之间的区别(来自Oracle)

链表和ArrayList之间的运行时间?代码分析

类的继承变量和自己变量之间的区别

在运行时检查协议继承

Google Colab中的本地运行时和托管运行时有什么区别?

无法从网页类继承而不会发生运行时错误

java - 如何在Java运行时获取从抽象类继承的正确实例?