概述

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

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

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

什么是面向过程

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

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

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

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

什么是面向对象

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

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

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

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

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

面向对象的特性

封装

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

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

继承

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

多态

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

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

从C到JAVA,从面向过程到面向对象相关推荐

  1. Java 从面向过程走向面向对象的程序设计思想

    什么是面向过程?面向对象? 它们都是解决问题的思路 我用一个生活的例子来区别它们: 起床,洗漱,吃饭--等这些都是生活中的事 吃饭:我们想吃饭之前要做饭,饭菜可以是自己做,或者爸妈做,也可以下馆子 面 ...

  2. java面向过程和面向对象

    面向过程(Procedure Oriented):说的是功能的行为 面向对象(Object Oriented,简称OO):说的是功能的对象 面向过程理解: 当学习java的时候先了解java语言优良的 ...

  3. java知识点7——面向过程和面向对象、面向对象的内存分析、构造方法

    面向过程和面向对象 解决简单问题可以使用面向过程 解决复杂问题:宏观上使用面向对象把握,微观处理上仍然是面向过程. 面向对象具有三大特征:封装性.继承性和多态性,而面向过程没有继承性和多态性,并且面向 ...

  4. java面向过程编程怎么写_从面向过程到面向对象,我的编程之路

    也许现在新一代的程序员一开始涉足的就是c++,C#,Java这类面向对象的语言,如果这样,这篇文章可能得不到他们的认同. 这里,我只想写写我从面向过程到面向对象开发成长中的一些感想而已. 我最初学习的 ...

  5. JAVA入门级教学之(面向过程和面向对象的区别)

    目录 JAVA入门级教学之(面向过程和面向对象的区别) 面向过程和面向对象的区别: -面向过程: -面向对象: -发展历程: -生命周期中包括: -什么是类: -什么是对象: -软件开发的过程: -重 ...

  6. 下列叙述中正确的是 java语言_1. 下列关于JAVA语言特点的叙述中,错误的是[   ] A、Java是面向过程的编程语言...

    1. 下列关于JAVA语言特点的叙述中,错误的是[  ]A.Java是面向过程的编程语言   B.Java支持分布式计算C.Java是跨平台的编程语言   &... 1. 下列关于JAVA语言 ...

  7. 面向过程和面向对象的设计思想、java类、Java类的定义、java对象、对象的创建和使用、类和对象、变量分类、方法分类、构造方法、方法的重载

    1.面向过程和面向对象的设计思想 面向过程:procedure oriented programming 缩写 POP. 分析出解决问题所需要的步骤,然后把步骤一步一步实现. 面向过程直接关注流程. ...

  8. 面向过程 VS 面向对象

    面向过程(Process Oriented)这个词是在面向对象(Object Oriented)出现之后为与之相对而提出的.其实它在以前基本被叫做"结构化编程". 早期的程序设计, ...

  9. 面向过程和面向对象的本质理解

    http://kiritor.blog.51cto.com/7400479/1226762/ 面向过程和面向对象的本质理解 面向过程就是分析出解决问题所需的步骤,面向对象则是把构成问题的事物分解成对象 ...

  10. JavaScript学习(三十八)—面向过程与面向对象

    JavaScript学习(三十八)-面向过程与面向对象 一.程序设计语言中的两大编程思想:面向对象.面向过程 (一).面向过程 就是指完成某个需求的时候,先分析出完成该需求时所需要经历的步骤有哪些,然 ...

最新文章

  1. 是否有标准函数检查JavaScript中的null,undefined或空白变量?
  2. python wheel库(安装包查找)(适用于Python扩展程序包的非官方Windows二进制文件、Pypi官方库、清华大学开源软件镜像源)
  3. linux内核netfilter模块分析之:HOOKs点的注册及调用
  4. 1104File Space Bitmap Block损坏能修复吗
  5. mac 设置环境变量path的几种方法
  6. 新闻发布系统——网站发布
  7. python numpy逆_python-使用numpy的矩阵逆
  8. oracle rac 停机,RAC停机重启方案
  9. 什么是PON光模块?PON光模块有哪些作用和类型?
  10. 二维码和app扫码下载
  11. 低年级学生必读——牛人的大学四年是这样过的
  12. 最优化方法四:线性规划与非线性规划
  13. 百度地图自定义覆盖物
  14. SpringCloud Admin监控界面解释
  15. Java下载Excel文件
  16. Cube实现天空盒子,看了你自己也能做
  17. 比较经典的位字段例题(颜色三原色)
  18. 免费QQ群管助手-帮你管理QQ群
  19. [搬运]数字证书及 CA 的扫盲介绍
  20. 技术项目的评审及其标准

热门文章

  1. matlab左除怎么输入法,python 实现matlab左除
  2. php过滤非法字符函数,非法字符过滤_PHP教程
  3. java操作mysql数据库实例_jdbc操作mysql数据库实例
  4. position based dynamics
  5. TransUNet:Transformers医学图像分割强编码器
  6. html5盒子层级设置,解决CSS中子元素z-index与父元素兄弟节点的层级问题
  7. 剪枝综述论文阅读:Methods for Pruning Deep Neural Networks
  8. yolov5鱼苗检测计数:从数据标注到训练
  9. 学C++的室友手握这个项目,面试稳了
  10. 非结构化商业文本中隐私信息识别-第2名方案(含数据)