今晚参加拓科工作室的笔试两个很尴尬的问题

 **今晚我参加了一个工作室的招新,发现一个很简单却又很普遍的问题我都没答好。**

之后我自己思考并百度总结得到如下:

–面向过程和面向对象的区别以及各自的优缺点

             1.思想上的区别

1.1 “面向过程”(Procedure Oriented)是一种以过程为中心的编程思想。“面向过程”也可称之为“面向记录”编程思想。简而言之,面向过程强调流程化,线性化,步骤化的思考方式。
1.2 面向对象(Object Oriented,OO)是软件开发方法和编程思想。首先强调整体性和差异性,即可将任何事物看做一个有机统一的整体来研究,然后通过派生的方式实现差异性来降低高耦合的可能性;其次强调行为的多样性和多态性,然后后强调高度可扩展性,由此也因说明了面向对象的四个基本特征,抽象,封装,继承,多态。


          2.各自的优缺点

2.1面向过程的优点:流程化使得编程任务明确,在开发之前基本考虑了实现方式和最终结果;效率高,面向过程强调代码的胆小精悍,善于结合数据结构来开发高效率的程序。。流程明确,具体步骤清楚,便于节点分析。缺点是:需要深入的思考,耗费精力,代码重用性低,扩展能力差,维护起来难度比较高,对复杂业务来说,面向对象的模块话难度较高,耦合度也比较高。
2.2面向对象的优点:结构清晰,程序便于模块化,结构化,抽象化,更加符合人类的思维方式;封装性,将事务高度抽象,从而便于流程中的行为分析,也便于操作和自省; 容易扩展,代码重用率高,可继承,可覆盖;实现简单,可有效地减少程序的维护工作量,软件开发效率高。面向对象的缺点:效率低,面向对象在面向过程的基础上高度抽象,从而和代码底层的直接交互非常少机会,从而不适合底层开发和游戏甚至多媒体开发;复杂性,对于事务开发而言,事务本身是面向过程的,过度的封装导致事务本身的复杂性提高。
3.如何选择
首先,需求决定一切,其次,选择适合业务的以及适合开发人员水平的开发语言。


 -重载(Overload)和重写(Override)的区别

  • 方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载;重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的返回类型,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常(里氏代换原则)。重载对返回类型没有特殊的要求。
    谢谢大家!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值