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

2024-01-27

我试图澄清动态语言(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(使用前将#替换为@)

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

  • 从多个文本文件读取数据[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我是Java编程新手 我正在尝试打印
  • 使用可变参数绘制星形

    我的任务是编写程序 允许用户绘制星星 星星的大小和手臂数量可能不同 当我处理基本星时 我使用 GeneralPath 和点表进行处理 int xPoints 55 67 109 73 83 55 27 37 1 43 int yPoints
  • 信号量如何工作?

    信号量可以小于0吗 我的意思是 假设我有一个 N 3 的信号量 并且我调用 down 4 次 那么 N 将保持为 0 但一个进程将被阻塞 反之亦然 如果一开始我调用 N 可以大于 3 吗 因为在我看来 如果 N 可以高于 3 如果一开始我调
  • 如何在android中动态创建按钮?

    我想创建一个这样的页面 这 7 个按钮已经存在 但如果用户想添加更多类别 按钮 那么他可以使用 按钮并使用删除 按钮 有制作这个的想法或教程吗 创建 删除按钮onClick of button and button如下 public voi
  • 如何为 matplotlib 中已绘制的线设置标签?

    在我的代码中我已经执行了 ax plot x y b 并且需要能够在事后设置相应行的标签 以达到与我相同的效果 ax plot x y b label lbl 有没有办法在 Matplotlib 中做到这一点 如果你抓住了line2D创建对
  • 在 Windows 上构建 MLT 框架时出错

    我一直在遵循官方提供的构建指南here http www mltframework org bin view MLT WindowsBuild 我需要 MLT 来创建视频播放器 并且我选择仅安装前 4 个库 如指南中所述 FFmpeg SD
  • 使用 System.Windows.Forms.Timer.Start()/Stop() 与 Enabled = true/false

    假设我们在 Net 应用程序中使用 System Windows Forms Timer 在计时器上使用 Start 和 Stop 方法与使用 Enabled 属性之间有什么有意义的区别吗 例如 如果我们希望在进行某些处理时暂停计时器 我们
  • 异常:AttributeError:使用 Azure Function 和 Python 的“DefaultAzureCredential”对象没有属性“signed_session”

    我编写了一个运行 Python3 的 Azure 函数来简单地打开 Azure VM 该函数应用程序具有系统分配的托管标识 我已为其授予 VM 贡献者角色 为了让该函数使用托管标识 我使用了 DefaultAzureCredential 类
  • 如何通过反射获取透明代理的属性值?

    我的代码接收透明代理而不是原始实例 虽然这var type obj GetType 产生原始类的类型 下面的代码抛出TargetException 对象与目标类型不匹配 var value property GetValue obj nul
  • Selenium WebDriver (java) 可以与浏览器的检查工具元素选择器交互吗?

    通过使用 selenium 我可以访问位于检查选项卡中的浏览器元素选择器 在浏览器中按 Ctrl Shift C 吗 我想使用该选择器 指向 一个元素 并使其在浏览器中突出显示 例如 简单的事情如下 WebElement elem driv
  • 在 Python 中将主题标头添加到 server.sendmail()

    我正在编写一个 python 脚本来从终端发送电子邮件 在我目前发送的邮件中 它没有主题 我们如何为此电子邮件添加主题 我当前的代码 import smtplib msg From email protected cdn cgi l ema
  • 偏专业化朋友声明

    在下面的代码中 template
  • 为文件中的每个单词创建字典并计算其后面的单词的频率

    我正在尝试解决一个难题 却迷失了方向 这就是我应该做的 INPUT file OUTPUT dictionary Return a dictionary whose keys are all the words in the file br
  • 即使没有任何转换,也违反了 C 中的严格别名?

    How can i and u i在此代码中打印不同的数字 即使i定义为int i u i 我只能假设我在这里触发了 UB 但我不知道具体是如何触发的 ideone演示 http ideone com Gcv5Xm如果我选择 C 作为语言
  • Pytorch RuntimeError:张量 a (4) 的大小必须与非单维 0 处张量 b (3) 的大小匹配

    我使用的代码来自here https www learnopencv com image classification using transfer learning in pytorch 训练模型来预测印刷样式编号0 to 9 idx t
  • Bokeh 中的相关图问题

    当我通过绘制数据时rect 来自 Bokeh 我在可视化中得到了一条由水平块组成的单行 数据打印正确 据我所知格式正确 type 验证它们都是列表 谁能诊断这个吗 如果问题不在这里 那么我可以附加更多代码 如果需要 在 Ubuntu 14
  • 需要帮助获取嵌套的 ruby​​ 哈希层次结构

    我有哈希深层嵌套哈希 我希望每个键的层次结构 父到子 作为数组 例如 hash properties gt one gt extra headers gt type gt object type1 gt object2 entity gt
  • WPF - 将窗口置于前面

    我有一个 WPF 窗口 我没有关闭它 相反 我执行 Hide 和 Show 它 现在 当我双击记录上网格中的主窗口时 这将触发 Show 窗口 该窗口将始终显示在主窗口后面 我尝试过以下方法 但没有成功 view Show view Act
  • a.equals(a) 什么时候返回 false?

    我想知道在哪些情况下java中的变量不能相等 使用equals 方法 自身 我这里说的不是对象而是变量本身 只要代码编译并在调用 equals 时返回 false 到目前为止 我发现的唯一情况是 public class A public
  • 从 C# 应用程序调用 ASP.net Web 服务

    我有个问题 我如何调用 Web 服务并从 C 桌面应用程序获取结果 我正在制作一个桌面应用程序 我希望它能够连接到我的在线 ASP net Web 服务 这怎么可能 在 解决方案资源管理器 中 右键单击项目节点并选择 添加 Service参

随机推荐

  • IE 中的 XMLHttpRequest.responseURL

    我正在寻找一种方法来获得XMLHttpRequest responseURL https developer mozilla org en US docs Web API XMLHttpRequest responseURL in IE 我
  • 如何在 Jquery POST 中获取 HTTP 错误响应代码

    我有一个包装函数用于向服务器发送请求 如果服务器返回代码 401 并且我不知道如何获取此数据 我需要执行一些特定操作 mobile showPageLoadingMsg post apiUrl method p function d mob
  • 命令行curl超时参数

    我正在使用命令行curl程序 有趣的是我找不到命令行curl的超时参数 我阅读了 curl 的手册页并用谷歌搜索 但仍然找不到 这libcurl有超时参数 CURLOPT TIMEOUT 但这不是我想要的 我正在寻找命令行curl超时参数
  • document.ready() 内部函数和 标签中的函数之间的区别

    这两个函数有什么区别 1 document ready function myfunc function dosomething do something 2 The document ready 函数在 DOM 加载完成时执行 看http
  • mvc3 - 如何从源代码禁用符号的 htmlencode

    我需要从数据库表中取出页面文本 表字段 文本 包含带有 html 格式标记的文本 例如 p br 等等 在表中它没有编码 当我尝试使用 Model Text 输出时 我看到编码的 html 标签 例如 lt p gt 我怎样才能禁用这个 h
  • 如何发现正在使用的 Linux 发行版

    有时我需要访问一些运行Linux 或者可能是另一个类Unix SO 的服务器 但我不知道如何验证哪些服务器分配 http en wikipedia org wiki Linux distribution正在服务器上使用 有时甚至服务器的 负
  • 当我尝试在 Xcode 中重构时,出现一条警告,要求将文件添加到此工作区中目标的构建阶段

    当我尝试通过重命名来重构代码时 我经常看到此消息 h is not part of the build phase of any targets in this workspace and so can t be refactored Ad
  • 创建没有数组的刽子手游戏[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 这就是输出的样子 我需要在原始字符串中找到猜测的索引 如果这是真的 那么应该用读入的字符替换索引处的问号 字符串猜测 之后 它应该从字符串
  • 表达式求值的顺序

    我很好奇一些不同类型的表达式的顺序 所以我在顶部声明级别尝试了这段代码 认为它会失败 但发现它有效 http play golang org p CfP3DEC5LP http play golang org p CfP3DEC5LP va
  • 在新的 CardView 中对齐多个 TextView

    我正在尝试创建一个 CardView 它将显示作者的引用 包括作者姓名 引用以及其下面的引用 我想我已经掌握了大部分内容 但似乎对齐 TextView 的一般规则似乎不适用于 CardView 我在这里研究发现你应该添加android la
  • ANT - 无法加载依赖类 com/jcraft/jsch/Logger

    我的 Ant 脚本有问题 我需要将文件复制到 Linux 服务器
  • go 中 ioutil.ReadAll 的替代方案?

    对于我正在制作的程序 此函数作为 for 循环中的 goroutine 运行 具体取决于传入的 url 数量 没有设定数量 func makeRequest url string ch chan lt string errors map s
  • 当两个超类具有同名但签名不同的成员函数时,存在歧义

    struct A void f int x struct B template
  • 安装了Visual Studio 2010 SP1,仍然不支持CSS3和HTML5

    我已从以下位置下载了最新版本的 Visual Studio 2010 Service Pack 1 here http www microsoft com download en details aspx id 23691 然而 在我提取文
  • 如何在分解时间序列图中自定义标题、轴标签等

    我相当熟悉通过编写自己的 x 轴标签或主标题来修改绘图的常用方法 但在绘制时间序列分解的结果时 我无法自定义输出 例如 library TTR t lt ts co2 frequency 12 start 1 deltat 1 12 td
  • 测试小程序的最佳机制是什么?

    我正在尝试有效地为小程序构建一个功能测试套件 并且我正在尝试为其找到一个好的框架 过去 当我想设计一个测试套件来对应用程序进行功能测试和负载测试时 它始终是基于 Web 的应用程序 或者至少是某种基于服务的应用程序 并且我已经使用grind
  • 如何在http get请求中设置标头?

    我正在 Go 中执行一个简单的 http GET client http Client req http NewRequest GET url nil res client Do req 但我找不到自定义请求标头的方法doc http go
  • 如何获取维基数据上所有电影的列表?

    我正在使用 Freebase 为我的网站获取所有电影 但它很快就会被关闭 所以我在寻找另一个免费的电影数据库并发现了维基数据 说实话 如何查询所有电影太复杂了 所以我想你们可以帮助我获取维基数据中的所有电影 将来我还想加入电视节目和连续剧
  • jQuery - 对数组进行排序?

    我使用 Ajax 获取一些 XML 然后用结果填充表单上的一些字段 表单上有一个数字字段 我想按该数字对结果进行排序 从高到低的在前 我将如何在 jQuery 中做到这一点 我的js函数代码目前是 function linkCounts w
  • 运行时动态绑定和类继承之间的区别

    我试图澄清动态语言 Python Ruby 和静态类型语言 java C 中运行时动态绑定和类继承的概念 我不确定我是对还是错 在 Python 和 Ruby 等动态语言中 运行时动态绑定是作为鸭子类型实现的 当解释器检查对象的类型时 它检