Thing-in-Java(P57)

本文探讨了面向对象编程中函数调用的独特机制——早期绑定与动态绑定的区别。介绍了传统编译器如何生成特定函数名的调用,并通过链接器解析为具体的代码地址来执行。而在面向对象编程中,由于对象类型的确切信息直到运行时才能确定,因此需要采取不同的方案来实现消息传递。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

The answer is the primary twist in object-oriented programming: the
compiler cannot make a function call in the traditional sense. The
function call generated by a non-OOP compiler causes what is called early
binding, a term you may not have heard before because you’ve never
thought about it any other way. It means the compiler generates a call to a
specific function name, and the linker resolves this call to the absolute
address of the code to be executed. In OOP, the program cannot
determine the address of the code until run time, so some other scheme is
necessary when a message is sent to a generic object.

 

翻译:,

这个问题的答案也是面向对象编程最巧妙的设计:编译器不能确保一个函数以传统的方式被调用,这个函数被一个不是面向对象的编译器调用会引起所谓的早期绑定,这个术语你也许从来没听过,因为你没有想过函数调用的其他方式。这意味着它创建一个特定的函数名的调用,这个连接到绝对的代码地址从而执行。在面向对象编程中,直到运行时才能确定那段代码的地址,所以当一个信息发送给一般的对象,采用其他的方式是必须的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值