C与java多态的区别?
一、C与java多态的区别
C与java多态的区别主要在函数调用方式上。
C++中的函数调用方式:
普通函数调用:具体调用哪个方法在编译时间就可以决定(通过查找编译器的符号表),同时在使用标准过程调用机制基础上增加一个表示对象身份的指针(this指针)。
虚函数调用:函数调用依赖于对象的实际类型,一般地说,对象的实际类型只能在运行时间才能确定。虚函数一般要有两个步骤来支持,首先每一个类产生出一堆指向虚函数的指针,放在表格中,这个表格就叫虚函数表(virtual table);然后每一个类对象(class object)会添加一个指向相关虚函数表(virtual table)的指针,通常这个指针叫做vptr。
在Java中的函数调用方式:
区别还是满大的。在java虚拟机中,类实例的引用就是指向一个句柄(handle)的指针,而该句柄(handle)其实是一对指针:其中一个指针指向一张表,该表格包含了对象的方法列表以及一个指向类对象(表示对象类型)的指针;另一个指针指向一块内存地址,该内存是从java堆中为对象的数据而分配出来的。
延伸阅读:
二、多态是什么
所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。. 因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性。
以上就是关于C与java多态的区别的内容希望对大家有帮助。

猜你喜欢LIKE
相关推荐HOT
更多>>
VBS 和 Powershell 有什么区别?
一、VBS 和 Powershell 的区别VBSVBS是基于Visual Basic的脚本语言。VBS的全称是:Microsoft Visual Basic Script Edition。用记事本就详情>>
2023-10-11 23:04:33
时间敏感网络中流量整形与流量调度算法的区别是什么?
一、时间敏感网络中流量整形与流量调度算法的区别简单来说,整型算法是在流量尺度上的,比如名列前茅秒流量是 10Mb 第二秒是 2Mb,整型器可以把...详情>>
2023-10-11 22:03:47
执行字节码的虚拟机和执行机器码的物理机有什么区别?
一、执行字节码的虚拟机和执行机器码的物理机的区别执行字节码的虚拟机和执行机器码的物理机之间有以下区别:1、编译和执行方式不同执行机器码...详情>>
2023-10-11 21:14:20
卫星定位和基站定位的区别?
一、卫星定位和基站定位的区别1、定位方式不同基站定位是根据看到的通信铁塔为基准进行的定位。任何一部手机,只要在信号覆盖的地方,随时随地...详情>>
2023-10-11 18:41:09热门推荐
VBS 和 Powershell 有什么区别?
沸js中==和===的区别?
热时间敏感网络中流量整形与流量调度算法的区别是什么?
热数据科学、大数据、人工智能、机器学习有什么区别?
新执行字节码的虚拟机和执行机器码的物理机有什么区别?
PaaS 和 SaaS 有什么区别?
XFS 文件系统中soft limit 和 hard limit 有什么区别?
直接敲击加号键和按住shift敲加号键有什么区别?
store与save有哪些区别?
卫星定位和基站定位的区别?
软件层和应用层有哪些区别?
Ghost与复制有哪些区别?
mybatis与hibernate区别?
搞c的和搞java的有啥区别?
技术干货






