zoukankan      html  css  js  c++  java
  • 从C到JAVA,从面向过程到面向对象

    概述

    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就可以使用了(达到了代码复用的效果)。

    多态

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

  • 相关阅读:
    word,excel,ppt转Pdf,Pdf转Swf,通过flexpaper+swftools实现在线预览
    Node做中转服务器,转发接口
    Vue——路由回退至指定页面
    Vue——前端生成二维码
    解决移动端键盘弹起导致的页面fixed定位元素布局错乱
    Vue——手机号、验证码登录(设置按钮60s禁用倒计时)
    Vue——解决报错 Computed property "****" was assigned to but it has no setter.
    typescript 起步之安装及配置 ts-node 环境变量
    区分 for...in 和 for...of
    解决HTML5(富文本内容)连续数字、字母不自动换行
  • 原文地址:https://www.cnblogs.com/Libinkai/p/10505133.html
Copyright © 2011-2022 走看看