什么是动态绑定(Dynamic Binding)?

在计算机科学中,名称绑定是一个标识符(如函数名或变量名)与代码或数据段的关联。在最常见的情况下,静态绑定是在编译时已知的。在动态绑定中,函数映射的对象在编译时未知,只能在程序期间确定由于这个原因,它也被称为后期绑定...
在计算机科学中,名称绑定是一个标识符(如函数名或变量名)与代码或数据段的关联。在最常见的情况下,静态绑定是在编译时已知的。在动态绑定中,函数映射的对象在编译时未知,只能在程序期间确定由于这个原因,它也被称为后期绑定。虽然它提供了静态绑定所不具备的灵活性,但它也比静态绑定需要更多的性能开销。在动态绑定中,函数映射的对象在编译时是未知的,只能在程序运行时确定。动态绑定与多态性密切相关,它是面向对象编程的一部分。多态性允许以不同的方式实现相同的方法名。如果代码的编写方式不足以在编译时确定精确的方法,则必须使用动态绑定。例如,“Shape”类可能有一个名为“GetArea”的方法,因为shape有一个区域。“shape”的“Circle”子类的实现方式与“Square”子类的实现方式不同。因此,如果创建了“shape”类型的新对象,并且代码在该形状上调用了“GetArea”方法,编译器将无法知道该形状最终是圆还是正方形,因此它不知道调用哪个GetArea方法。这是动态绑定的一个例子,因为正确的GetArea方法只有在程序知道对象的形状之后,才会在运行时映射。动态绑定允许灵活地使用抽象方法,而不必知道具体的实现是什么用过在“Shape”示例中,可以通过显式使用以下逻辑编写代码以避免动态绑定:如果形状是圆,则调用circle~s GetArea方法;否则,如果形状是正方形,为squares调用特定的GetArea方法。动态绑定的好处是代码比其他方法更干净、更易于维护。在静态绑定示例中,存在代码重复,只要添加新类型的形状,代码都必须更新。缺点是性能和安全性。在静态绑定中,编译器确切知道要调用什么代码,并可以优化代码以更高效地运行。类型安全可能是一个问题,因为在某些动态绑定实现中,可以对不支持该方法的对象调用方法。例如,“GetArea”方法可能对不是形状的对象调用,因此没有“GetArea”方法,这可能会导致运行时错误。静态绑定将通过引发编译错误来阻止这种情况
  • 发表于 2020-08-06 19:02
  • 阅读 ( 1222 )
  • 分类:电脑网络

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
admin
admin

0 篇文章

作家榜 »

  1. xiaonan123 189 文章
  2. 汤依妹儿 97 文章
  3. luogf229 46 文章
  4. jy02406749 45 文章
  5. 小凡 34 文章
  6. Daisy萌 32 文章
  7. 我的QQ3117863681 24 文章
  8. 华志健 23 文章

联系我们:uytrv@hotmail.com 问答工具