大家好,又见面了,我是你们的朋友全栈君。
面向对象和面向过程最本质的区别在于考虑问题的出发点不同,面向过程是以事件流程为考虑问题的出发点,而面向对象则是以参与事件的角色(对象)为考虑问题的出发点,所以面向对象在处理问题时更加灵活。目前,面向过程的语言更多被用于处理底层业务,而面向对象编程则更多用于实现一些业务逻辑复杂的大型系统。
从结构上来说,面向过程的特点是模块化和流程化,而面向对象的特点是封装、继承和多态,这里面就有本质的区别了。面向过程以功能(函数)作为模块化的基础,而面向对象则以类作为功能的组织基础,而类需要一个“抽象”的过程。比如在Java中,完成一个功能的调用需要三个步骤,分别是类的定义,对象的创建,方法的调用,看一个例子:
而C语言的功能实现则方便得多,看一个例子:
通过这个例子我们发现,Java更麻烦一些,Java需要先根据功能抽象出类,然后创建出对象,再然后通过对象才能完成对方法的调用,而C语言则只需要函数的定义和调用,并不需要创建对象,所以C语言的执行效率更高。
但是由于有了对象的概念,面向对象编程的灵活性更强,对象与对象之间也可以产生比较复杂的交互关系,也因此会有继承和多态的概念。继承的核心特点是复用,避免模块间重复和模块内重复的问题,而多态的特点是灵活,针对于不同情况可以做出更加灵活的处理方式。当然,由于面向对象需要一个抽象的过程,所以在效率方面就没有面向过程语言那么高。关于面向对象的细节,我在头条上写过专门的文章,大家可以关注我的头条号并查看,这里就不赘述了。
我使用Java和C语言的时间都比较久,我在头条上也写了关于Java编程方面的系列文章,如果有编程方面的问题,也可以咨询我。
谢谢!
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/156336.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...