Java漫谈1

对于接触编程的人来说,Java更多地代表了一门编程语言。

Java是一门通用的计算机编程语言,它是并行的,基于类的,面向对象的,可以一次编写到处运行的一门语言。

以上这句话摘自维基百科。不过刚开始接触编程的那段时间看到这句话时,仍然是一头雾水。我懂什么叫“计算机编程语言”,也大概懂“并行”的意思。但其后面的“基于类的”,“面向对象的”,看到这个我倒是不懂。

今天有朋友问我什么是Java的话,我通常会这么表达,如下:

你可以把软件产业想象成是一个江湖,在这个江湖中,C语言是易筋经,C++是少林七十二绝技。而Java就相当于是独孤求败用过的那柄玄铁重剑。也就是经杨过之后后来被黄蓉锻造成倚天剑和屠龙刀的那柄。自然,倚天剑和屠龙刀就对应了Java的两大应用分支,前者对应轻巧、敏捷、快速的Android开发,后者对应笨重而不失灵活性地服务器后端开发。

这种表述没有直接回答Java的本质,而是先从其在体系中的关系入手,来描述它。我觉得这样描述,会迅速地让提问者通过描述中的类比与现实生活产生联系,从而用一种相似的,或者说是一种类比的联系来理解它的存在。

当理解了关系之后,再去看其本质的定义,这个时候即使仍旧看不懂这个定义,也可以在理解关系的定义的时候展开相应的联想和思考了。

那“基于类”、“面向对象”这两个又该如何理解呢?

基于类

什么是类

在明白“基于类”这个名词之前,我们得要先明白什么是类。比较官方一点儿的解释就是——有着相同属性和动作的事物的集合。你可以把类想象成一个模板,比如我们是人类,也就是说我们都属于人这个模板,所以我们都会有一个头,两个胳膊,两条腿。而不会多一个头或者,多几个胳膊。

基于类的好处

而一旦有了这个模版,那么开发的时候就方便了。这就好比在四六级考试时,套用模板会比挖空脑袋白手起家要轻松。不过在现实的考试中你要是没有模版也能写出一些话出来,但在Java中,要是没有类,那可就什么程序都run不起来了。这个时候,你若有点儿编程经验可能就要问了,不对啊,我写第一个HelloWord的时候不也没有用类么?那是因为你刚进去的时候写HelloWord语句的那个文件就是一个类,只不过它没有什么明显的特征而已。就像空气一样,只有当它消失的时候,才感觉到它的存在。

面向对象

之前我们说道类有点儿像写作的模版,那么通过这些模版写出来的文章又相当于什么呢——对象。对象在Java中的就是被定义为类的实例。你与我都属于人类,你算是一个对象,我也算是一个对象,只要在这个世上具体的,活生生存在的生命体,就都是对象。

把这个概念发散一下,桌床櫈椅属于家具类,它们是家具类的实例,它们是对象;车船飞机属于交通工具类,他们是交通工具的具体实例;山河大川属于地理类,它们是地理的实例。从这个角度看,能得出两个结论。结论一,类和对象不是单一的转化关系,也就是说,对象可以更具类生成,类也可以从一群对象中提炼出来。结论二,万物皆对象。

在写这篇文章的时候,在知乎上看到一个关于面向对象的解释,感觉挺有趣,在这与你分享。

面向对象说白了就是,你办事我放心。即使我不放心,那也要假装放心。--摘自知乎

就比如要吃个蛋炒饭,面向过程的语言可能要从准备食材,热锅,一直到炒饭的全过程都得要自己完成。而面向对象的语言则只要告诉厨师这个对象我要吃蛋炒饭就可以了。在这个过程中不需要去管做饭的过程,当然至于炒出来的饭是咸是淡那就无法掌控了,如果不好吃,那唯一的办法就是换一个厨子再做一次,反应到程序中就是换一个对象调用相应的方法生成蛋炒饭。

小结一下,这篇文章主要分享了我对Java概念的理解,其中最重要的是它基于类,并且面向对象的特征。Java概念的话题就聊到这儿,我们下回见。

原文发布于微信公众号 - 怀英的自我修炼(hydzwxl)

原文发表时间:2017-09-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏我杨某人的青春满是悔恨

漫谈面向对象

这年头但凡是写过几行代码的,想必都不会对面向对象(Object-Oriented, OO)这四个字感到陌生。但什么才是面向对象,不知道又有多少人真正去思考过。有...

937
来自专栏企鹅号快讯

C语言的前世今生,及其特点、利弊和入门须知三把斧

C语言的开展前史: ? 20世纪70年代初,贝尔实验室的Dennis Richie 等人在B语言基础上开发C语言,最初是作为UNIX的开发语言; 20世纪70年...

1816
来自专栏自由而无用的灵魂的碎碎念

教你轻松计算AOE网关键路径(转)

原文链接:http://blog.csdn.net/wang379275614/article/details/13990163

621
来自专栏大数据钻研

JavaScript 世界万物诞生记

一. 无中生有 起初,什么都没有。 造物主说:没有东西本身也是一种东西啊,于是就有了null: ? 现在我们要造点儿东西出来。但是没有原料怎么办? 有一个声音说...

3108
来自专栏小小挖掘机

数据城堡参赛代码实战篇(一)---手把手教你使用pandas

小编们最近参加了数据城堡(http://www.pkbigdata.com/)举办的“大学生助学金精准资助预测”比赛,分组第19名的成绩进入了复赛,很激动有木有...

3034
来自专栏牛客网

渣硕面筋release v1.0(Google已跪)

注:凡是题目需要保密的,都没有写在这里,如有同样要求请通知我修改 校招结束,我选头条 正值十一长假,赶在了小论文截稿前一天投出去了。正好国内的互联网公司校招基本...

41313
来自专栏韩伟的专栏

字节的奥秘

在数码产品中,最常见的名词就是“字节”了。不管是U盘容量、手机存储空间,还是网络带宽,下载速度,都会涉及所谓“字节”这个单位。但到底“字节”是一个什么东西呢?本...

3164
来自专栏java 成神之路

HashMap实现中文分词器

3287
来自专栏信数据得永生

JavaScript 编程精解 中文第三版 七、项目:机器人

3146
来自专栏ACM算法日常

新手ACM算法学习建议

一般要做到50行以内的程序不用调试、100行以内的二分钟内调试成功。ACM主要是考算法的,主要时间是花在思考算法上,不是花在写程序与debug上。

783

扫描关注云+社区