从C到JAVA,从面向过程到面向对象

概述

C语言是很多大学生接触到的第一门编程语言,也可以说是一个岔路口——学了C语言,可以去搞硬件,也可以去搞软件(当然两者都需要继续学习,不是说C语言是万能的)。

如果选择了向软件方向发展,那么学一门面向对象的编程语言就是很有必要的了。又如果选择了高雅美丽大方得体帅气可爱健康的JAVA,如何从C过渡到JAVA,从面向过程过渡到面向对象呢?(老师,我扣题了!(°∀°)ノ)

在我看来,学好C,再学其它高级语言就可以少走很多弯路了,因为编程语言在某种程度上都是相通的。所以在这里我只说一些我觉得JAVA和C不同的地方:

什么是面向过程

面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了(百度百科)。

C语言是典型的面向过程的编程语言。在C语言中,你就是上帝(主函数就是上帝意志的体现......),你把想做的事“封装”成一个一个函数模块,然后在主函数中通过调用不同的函数完成不同的功能,最后达到你想到的效果(得到你想要的输出)。

如:定义一个 Student 结构体,然后定义一个study函数。在主函数中调用study函数,打印“XXX is studying ! ”语句。

1271330-20190310135630523-1585251763.png

1271330-20190310135635618-11243081.png

这会给人一种感觉(至少是给我):study这个行为是上帝(主函数)发出的,而student是这个行为的原材料(Σ(゚д゚;))。在C语言中把可复用的代码块写成一个个函数,这就有点封装的味道了(事实上就是?)。有人说,面向对象就是结构体里面包含了函数,好像对也好像不对:面向对象编程确实把数据(属性)和函数(方法)放到了一块,但是它还有许许多多面向过程编程没有的特性。

什么是面向对象

面向对象就是是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为(百度百科)。

JAVA是典型的面向对象编程语言之一。在JAVA(或者说面向对象编程语言)中,你还是上帝,但是你是一个“简政放权”了的上帝。你创建了一个个对象,然后这些对象干这干那的。

如:创建一个Student对象,然后这个Student对象在主函数中调用自己study函数,打印“XXX is studying ! ”语句。

1271330-20190310135652235-735633298.png

1271330-20190310135657519-2039908973.png

1271330-20190310135705728-402430805.png

这会给人另外一种感觉(至少是给我):主函数还是上帝,但是study行为不是上帝发出的了,Student也不用被当做原材料了,study这个行为是Student主动发出的。或者有人说,胡说!明明是你(上帝)叫学生去学习的,不然他早就去play了!

......确实,在这里看起来好像是上帝指使学生去学习一样,还是给人一种面向过程的感觉。但是这只是一种展示而已,比如说在GUI编程,在WEB编程中等,用户的行为都是不可预测的(打个比方,你在看视频时,如果想调大音量和快进,那么你是先快进再调大音量或者说先调大音量再快进,程序是无法保证的。它是不可能给你一套说明书:要快进必须先调小音量或者先调小音量再快进)。所以像面向过程那样按部就班来设计你的代码,不是很符合实际。

面向对象的特性

封装

对象把自己的数据(属性)隐藏起来,外部无论是访问还是赋值,都必须按照类自己定义规范来。

如,你可以在setter中,规范age的范围:

1271330-20190310145604984-1068090685.png

继承

当一个class(类),和一个已经定义好的class有“is-a”关系(如猫 Cat 是动物 Animal,Cat is Animal),那么 Cat 就可以继承 Animal。Animal 中的属性,Cat就可以使用了(达到了代码复用的效果)。

多态

多态是同一个行为具有多个不同表现形式或形态的能力。

转载于:https://www.cnblogs.com/Libinkai/p/10505133.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值