gpt4 book ai didi

java - 运行时动态绑定(bind)和类继承的区别

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:41:29 28 4
gpt4 key购买 nike

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

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

在Java、C++等静态类型语言中,运行时动态绑定(bind)只能通过类继承获得。类继承不仅减少了这里的代码拷贝,还用于实现运行时动态绑定(bind)。

综上所述,类继承和运行时动态绑定(bind)是两个不同的概念。在 Python 和 Ruby 中,它们完全不同;在 Java 和 C++ 中,它们混合在一起。

我说的对吗?

最佳答案

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

但是当我重新阅读你的问题时,我认为我不会同意“Java 和 C++,运行时动态绑定(bind)是作为类继承实现的”。类继承只是更广泛行为的定义,包括现有类的现有行为。此外,运行时绑定(bind)不一定与面向对象有任何关系;它可以仅指延迟方法解析。

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

简而言之,继承是指对象的定义蓝图。运行时动态绑定(bind)在最基本的层面上只是一种在执行时解析方法调用的机制。

编辑 关于这一点我确实需要澄清一点:Java 对重写 类方法实现动态绑定(bind),而C++ 在运行时通过多态确定类型,所以它是我说动态绑定(bind)与类继承“没有关系”是不准确的。在“宏观”层面上,它们并没有内在的相关性,但给定的语言可能会在其继承机制中利用它。

关于java - 运行时动态绑定(bind)和类继承的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12729828/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com