我试图澄清动态语言(Python、Ruby)和静态类型语言(java、C++)中运行时动态绑定和类继承的概念。我不确定我是对还是错。
在 Python 和 Ruby 等动态语言中,运行时动态绑定是作为鸭子类型实现的。当解释器检查对象的类型时,它检查该对象是否具有特定的方法(或行为),而不是检查对象的类型;并且运行时动态绑定并不意味着类继承。类继承只是减少 Python 和 Ruby 中的代码复制。
在Java和C++等静态类型语言中,运行时动态绑定只能通过类继承来获得。类继承不仅减少了这里的代码复制,而且还用于实现运行时动态绑定。
综上所述,类继承和运行时动态绑定是两个不同的概念。在Python和Ruby中,它们是完全不同的;在Java和C++中它们混合在一起。
我对吗?
您是正确的,运行时动态绑定在概念上与类继承完全不同。
但当我重新阅读你的问题时,我不认为我会同意“Java 和 C++,运行时动态绑定是作为类继承实现的”。类继承只是更广泛行为的定义,包括现有类的现有行为。此外,运行时绑定不一定与面向对象有关;它可以仅指延迟方法解析。
类继承是指如何构建对象的“模板”,通过连续的子类具有越来越精细的行为。运行时动态绑定只是一种说法,即对方法的引用(例如)被推迟到执行时。在给定的语言中,特定的类可以利用运行时动态绑定,但继承的类在以下位置解析:compile time.
简而言之,遗产指的是定义 or 蓝图一个物体的。运行时动态绑定在最基本的层面上只是一种在执行时解析方法调用的机制。
EDIT我确实需要澄清一点:Java 实现动态绑定被覆盖类方法,而C++在运行时通过多态性确定类型,所以我说动态绑定与类继承“没有关系”是不准确的。在“宏观”层面上,它们本质上并不相关,但给定的语言可能会在其继承机制中利用它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)