静态绑定(static binding)和动态绑定(dynamic binding)的区别

Java和C等编程语言支持面向对象编程(OOP)。它允许使用对象构建软件。软件系统或程序中有许多对象。这些对象具有属性和方法。属性描述特征。方法描述对象可以执行的操作。数据使用方法通过对象传递。所需的值通过带有参数的方法调用发送。实际的方法实现在方法定义中。方法调用和方法定义之间存在链接。它被称为绑定。有两种类型的绑定。它们是静态绑定和动态绑定。静态绑定和动态绑定的关键区别在于,在静态绑定中,绑定...

关键区别–静态绑定与动态绑定

Java和C等编程语言支持面向对象编程(OOP)。它允许使用对象构建软件。软件系统或程序中有许多对象。这些对象具有属性和方法。属性描述特征。方法描述对象可以执行的操作。数据使用方法通过对象传递。所需的值通过带有参数的方法调用发送。实际的方法实现在方法定义中。方法调用和方法定义之间存在链接。它被称为绑定。有两种类型的绑定。它们是静态绑定和动态绑定。静态绑定和动态绑定的关键区别在于,在静态绑定中,绑定是在编译时解析的,而动态绑定是在运行时(即实际执行时间)解析的。本文讨论这两种绑定机制之间的区别。

目录

1. 概述和主要区别
2. 什么是静态绑定
3. 什么是动态绑定
4. 静态绑定与动态绑定的相似性
5. 并列比较-静态绑定与动态绑定的表格形式
6. 摘要

什么是静态绑定(static binding)?

绑定是方法调用和方法定义之间的链接。

静态绑定(static binding)和动态绑定(dynamic binding)的区别

图01:静态绑定和动态绑定

参考下面用Java编写的程序。

公共A级{

公共无效方法1(){

System.out.println(“方法1”);

}

公共无效方法2(){

System.out.println(“方法2”);

}

公共静态void main(String[]args){

A obj=新A();

目标方法1();

目标方法2();

}

}

根据上述程序,创建了A类型的对象。然后调用方法1和方法2。确定应该调用执行的方法称为绑定。陈述obj.method1()将调用method1()和obj.method2()将调用method2()。此链接正在绑定。

在静态绑定中,绑定由编译器在编译时解析。它也被称为早期绑定。绑定发生在程序实际运行之前。静态绑定发生在方法重载中。参考下面用Java编写的程序。

公共空隙计算{

公共无效金额(int x,int y){

System.out.println(“和为”,x+y);

}

公共空白和(双x,双y){

System.out.println(“和为”,x+y);

}

公共静态void main(String[]args){

Calculation cal=新计算();

计算总和(2,3);

计算总和(5.1,6.4);

}

}

根据上面的程序,当传递两个整数时,将调用包含两个整数的方法。当传递两个double值时,将调用两个double值对应的方法。此绑定过程发生在编译时。编译器知道它应该调用带有两个整数值的sum方法计算总和(2,3)。对于cal(5.1,6.4),它将使用两个双精度值调用sum方法。所有需要的信息在运行前就知道了,提高了程序的效率和执行速度。

什么是动态绑定(dynamic binding)?

在动态绑定中,编译器不会在编译时解析绑定。绑定发生在运行时。它也被称为后期绑定。动态绑定发生在方法重写中。指用Java编写的程序。

公共类形状(){

公共无效绘制(){

System.out.println(“绘制”);

}

}

公共类Circle()扩展形状{

公共无效绘制(){

System.out.println(“画圆”);

}

}

公共类Triangle()扩展形状{

公共无效绘制(){

System.out.println(“绘制三角形”);

}

}

公开课考试{

公共静态void main(String[]args){

形状s;

s=新形状();

s、 绘制();

s=新圆();

s、 绘制();

s=新三角形();

s、 绘制();

}

}

根据上面的程序,类Shape有一个draw()方法。类圆和类三角形扩展了形状类。类圆和类三角可以继承类Shape的属性和方法。因此,类形状是超级类或父类。类圆和类三角形是子类或派生类。这些类还有draw()方法和它们自己的实现。因此,超类中的draw()方法被重写。

在main方法中,调用不同的对象。有一个Shape类型的引用变量,它是s。然后,s根据特定的类调用方法。在编译时,编译器将只引用超级类draw方法。当实际执行开始时,将导致执行不同的绘制方法。首先,s将指向Shape类型的对象。因此,它将调用Shape类中的draw方法。然后s将指向Circle类型的对象,并调用Circle类的draw方法。最后,s将引用Triangle类型的对象,并调用Triangle类中的draw方法。即使引用变量是Shape类型,绑定也恰好依赖于对象类型。这个概念被称为动态绑定。信息是在运行时提供的,因此与静态绑定相比,执行速度较慢。

什么是静态绑定与动态绑定的相似性(the similarity between static binding and dynamic binding)?

  • 这两者都与允许对象以多种方式表现的多态性有关。

静态绑定(static binding)和动态绑定(dynamic binding)的区别

静态绑定与动态绑定
静态绑定是在编译期间收集调用函数所需的所有信息的绑定类型。 动态绑定是在运行时收集调用函数所需的所有信息的绑定类型。
装订时间
静态绑定发生在编译时。 动态绑定发生在运行时。
功能
静态绑定使用类型信息进行绑定。 动态绑定使用对象来解析绑定。
实际对象
静态绑定不使用实际对象进行绑定。 动态绑定,使用实际对象进行绑定。
同义词
静态绑定也称为早期绑定。 动态绑定也称为后期绑定。
执行
静态绑定的执行速度很快。 动态绑定的执行速度很低。
例子
静态绑定用于方法重载。 动态绑定用于方法重写。

总结 - 静态绑定(static binding) vs. 动态绑定(dynamic binding)

方法调用和方法定义之间存在链接。它被称为绑定。有两种类型的绑定称为静态绑定和动态绑定。静态绑定和动态绑定的区别在于,在静态绑定中,绑定在编译时解析,而动态绑定在运行时解析,即实际执行时间。由于所需的信息是在运行时之前提供的,所以与动态绑定相比,静态绑定的执行速度更快。

下载静态绑定与动态绑定的pdf文件

你可以下载这篇文章的PDF版本,并根据引文说明离线使用。请在这里下载PDF版本:静态绑定和动态绑定的区别

引用

  • 发表于 2020-10-19 17:49
  • 阅读 ( 418 )
  • 分类:IT

你可能感兴趣的文章

静止的(static)和动态内存分配(dynamic memory allocation)的区别

关键区别–静态内存分配与动态内存分配 在编程中,有必要存储计算数据。这些数据存储在存储器中。在计算机程序设计中用来存储数据的存储器被称为变量。变量具有特定的数据类型。因此,分配内存来运行程序。内存可...

  • 发布于 2020-10-11 12:09
  • 阅读 ( 1012 )

早期的(early)和后期装订(late binding)的区别

...用于解析方法调用。早期绑定发生在编译时。它也被称为静态绑定。在这个过程中,绑定发生在程序实际运行之前。重载方法是使用早期绑定绑定绑定的。参考以下程序。 图01等级计算   图02:早期绑定的主程序 根据上面的程...

  • 发布于 2020-10-19 04:05
  • 阅读 ( 383 )

活动站点(active site)和结合位点(binding site)的区别

...。 目录 1. 概述和主要区别 2. 什么是活动站点 3. 什么是绑定站点 4. 并列比较-活动位点与结合位点的表格形式 5. 摘要 什么是活动站点(active site)? 活性中心是酶上化学反应底物结合以进行催化化学反应的区域。该区域由两个亚...

  • 发布于 2020-10-22 05:58
  • 阅读 ( 349 )

动态(dynamic)和静态ip(static ip)的区别

动态IP是指每次连接到网络时都会发生变化的IP,而静态IP是指无论连接多少次或从网络断开多少次都保持不变的IP。您是否有静态或动态IP地址取决于所述网络的管理员。每次连接到网络时,动态IP都会发生变化;这是一种在连接...

  • 发布于 2021-06-22 11:51
  • 阅读 ( 390 )

静态恶意软件分析(static malware analysis)和动态恶意软件分析(dynamic malware analysis)的区别

...软件的功能。 用于恶意软件检测和分析的方法有两种:静态恶意软件分析和动态恶意软件分析。静态分析涉及检查给定的恶意软件样本而不实际运行它,而动态分析是在受控环境中系统地进行的。我们对两者进行了公正的比较...

  • 发布于 2021-06-25 17:38
  • 阅读 ( 431 )

动态拉伸(dynamic stretching)和静态拉伸(static stretching)的区别

...重要的一部分,它被分为两个不同的拉伸组。动态拉伸和静态拉伸。尽管这两个术语都是指伸展运动,但在体育项目的训练中,由于不同的原因,在不同的时间使用不同的术语。动态拉伸更具活力和身体吸引力。静态拉伸是一种...

  • 发布于 2021-06-26 00:09
  • 阅读 ( 570 )

静止的(static)和动态平衡(dynamic equilibrium)的区别

主要差异静态(main difference static) vs. 动态平衡(dynamic equilibrium) 在化学中,“平衡”是指化学反应的一种状态,在这种状态下,从外部的角度看,反应物和产物混合物的成分不能发生进一步的变化。然而,分析混合物内部...

  • 发布于 2021-06-27 09:49
  • 阅读 ( 567 )

静止的(static)和动态网站(dynamic website)的区别

静态网站和***站的主要区别在于,静态网站是一个具有固定内容的基本网站,而***站是一个根据客户要求提供不同内容的高级网站。 每个组织都维护网站。这有助于他们与客户沟通。设计和创建网站的过程称为web开发。HTML、CSS...

  • 发布于 2021-07-01 01:36
  • 阅读 ( 632 )

静止的(static)和动态ip(dynamic ip address)的区别

静态IP地址和动态IP地址的主要区别在于,静态IP地址是由网络管理员手动分配给设备的固定地址,而动态IP地址是由DHCP服务器自动分配给设备的地址。 计算机网络由各种设备组成,如台式机、笔记本电脑、服务器、路由器和交...

  • 发布于 2021-07-01 03:17
  • 阅读 ( 809 )

zend框架1(zend framework 1)和2.(2)的区别

...源PHP框架,具有zend1以外的其他特性,如名称空间、后期静态绑定、lambda函数和闭包。 PHP中有许多框架。这些框架由开发web应用程序所需的类组成。Zend就是这样一个框架,它是一个开源的框架,支持模型、视图和控制器(MVC)...

  • 发布于 2021-07-01 06:40
  • 阅读 ( 333 )
karu741
karu741

0 篇文章

相关推荐