早绑定,晚绑定,早晚都要绑定--引用网友的话
绑定:在对象和其类型间建立关联的过程
早绑定指在对象申明的时候就和他的类型建立了关联
晚绑定是指我们的代码在运行时再检查对象是否提供了我们所需要的方法和属性
很多人说C#和Java是早绑定的,javascript,python是迟绑定的,其实这个说法并不全对
一方面,C#和Java是强类型的,在变量声明的时候就说明了类型,从这里来讲当然是早绑定的,于是我们才能在IDE中享受代码提示带来的方便,因为ide通过你的申明就能知道你的对象是什么类型,具有什么方法和属性,然后提示给你,同时编译的时候也可以帮你检查许多类型转换的错误.
另一方面:无论C#和Java在实现他们很重要的一个功能:多态的时候,都是用晚绑定,比如你的父类中定义了virtual的方法,那么这个方法可能会在你的子类中重载,具体你用什么子类,是变量申明时所不知道的,在C++编译器会在编译的时候为这些类加上一个指针,指针指向一个虚表,虚表中存在着真实的函数,这个是就是一个晚绑定了
早绑定的优点是:
- 编译效率
- 代码提示(代码智能感知)
- 编译时类型检查
晚绑定的优点是:
一些资料
http://inmyheart.bokee.com/630168.html
http://community.csdn.net/Expert/TopicView3.asp?id=5647919
分享到:
相关推荐
在C#编程中,晚绑定(Late Binding)是一种在运行时确定对象类型并调用其方法或属性的技术。与早绑定(Early Binding)不同,早绑定在编译时就已经确定了对象类型,因此效率更高,但灵活性较低。晚绑定则牺牲了一些...
总的来说,使用MFC和晚绑定创建COM对象,开发者可以利用MFC的便利性来简化COM对象的实现,同时通过晚绑定机制实现跨对象、跨进程的动态调用,提高了代码的灵活性和可扩展性。不过,这也意味着需要对COM规范有深入...
不同于早绑定(编译时绑定),晚绑定允许在运行时确定接口的方法调用。在C++中,这通常通过虚函数实现,而COM对象的接口都是虚的。晚绑定提供了更大的灵活性,因为可以在程序运行时决定使用哪个具体实现,甚至可以在...
Windows xp/windowss7 /windows8绑定网关Mac和IP
1. C#中的晚绑定概念:晚绑定(Late Binding)是一种在运行时确定对象类型并调用其方法的技术,区别于早绑定(Early Binding),即编译时已经确定对象类型和方法。在C#中,晚绑定可以通过反射(Reflection)来实现。...
使用vue也好有一段时间了,虽然对其双向绑定原理也有了解个大概,但也没好好探究下其原理实现,所以这次特意花了几晚时间查阅资料和阅读相关源码,自己也实现一个简单版vue的双向绑定版本,先上个成果图来吸引各位:...
7. **接口的晚绑定和早绑定**: - **晚绑定(Late Binding)**:通过IDispatch接口实现,适用于不预先知道接口的具体类型的情况,如VBA脚本。 - **早绑定(Early Binding)**:通过IUnknown的QueryInterface获取...
Python中的延迟绑定,又称闭包延迟绑定问题,是由于Python函数在定义时并不立即计算其内部引用的非局部变量的值,而是等到运行时根据作用域链查找这些变量的值。这种特性在处理闭包时可能导致意料之外的结果,如在...
本文将深入探讨如何在Delphi中实现早绑定和晚绑定两种方式来调用DLL函数。 **早绑定(Static Linking)** 早绑定是指在编译阶段就已经确定了要调用的DLL函数。这种方式通常适用于已知DLL函数的情况,因为它提供了...
动态绑定(晚绑定)则是在运行期间建立的绑定,绑定关系可以在运行过程中根据程序的状态被改变。这种灵活性使得程序能够适应更多的场景和需求,但同时也可能牺牲一定的运行效率。纯解释型语言(动态语言)如Python、...
晚绑定允许在运行时决定调用哪个方法,而不是在编译时决定,这使得子类可以覆盖父类的方法,实现多态行为。 PHP中的多态性主要体现在以下几个方面: 1. **接口(Interface)**:接口定义了一组必须被实现的方法,...
4. **使用自动化对象的客户**:自动化对象的使用者有两种主要方式:早绑定和晚绑定。早绑定在编译时就需要知道对象的接口信息,这通常在C++等强类型语言中使用。晚绑定则在运行时通过IDispatch获取方法和属性,常见...
在C语言模拟的多态环境中,通过虚函数表和虚函数指针实现晚绑定。在函数调用时,通过虚函数指针间接访问虚函数表,并根据对象的实际类型调用相应的函数。 7. 使用虚函数的例子 文档提到了使用虚函数的例子,这些...
VB6的对象默认实现双重接口,支持三种绑定形式:DispID绑定、vtable绑定和晚绑定。如果对象变量已声明类型,它将使用最快的绑定形式。多态性允许使用相同的代码处理不同类型的对象,而无需知道它们的具体类型,这是...
这个场景可能是通过结合使用Canvas和SVG元素来实现的。 Canvas是HTML5中的一个核心元素,它是一个可编程的二维绘图表面,允许开发者通过JavaScript进行实时图形绘制。在本项目中,Canvas可能被用来绘制城市的背景,...
5. **晚绑定和早绑定**:COM支持两种绑定方式,早绑定是在编译时确定接口,晚绑定则是在运行时动态查找和绑定接口。晚绑定更灵活,但可能会牺牲一些性能。 6. **自动化和IDispatch**:IDispatch接口是COM为支持自动...
由于双接口同时支持早绑定和晚绑定,因此它可以提高性能,并且兼容各种不同类型的客户端。 总之,ATL双接口是一种强大的工具,它使得COM组件可以方便地与各种客户端进行交互,无论是C++编译时绑定的代码还是脚本...
总的来说,JavaScript中的对象和内置对象构成了其灵活且强大的编程基础,晚绑定特性使得JavaScript能够适应各种动态场景,而本地和内置对象则提供了丰富的功能和工具,便于开发者构建复杂的应用程序。理解并熟练运用...
总结来说,多态性是面向对象编程的重要特性,它通过上溯造型和动态绑定实现代码的复用和灵活性,增强了程序的可扩展性和可维护性。理解和掌握多态性是成为一个熟练的面向对象程序员的关键步骤。在实际编程中,合理...