Java漫谈1

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

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

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

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

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

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

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

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

基于类

什么是类

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

基于类的好处

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

面向对象

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

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

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

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

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

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

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

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序员宝库

如何让你的代码整洁漂亮?

Robert Martin的这句话非常合适: “唯一能有效测量代码质量的方式是每分钟说多少个What-the-Fk ”** 让我深入解释一下: 做代码回顾的时...

3306
来自专栏web前端教室

JS原型,a和b是不是失散多年的兄弟?

面试题这种东西真的是反人类的设计,我觉得它的最大的作用就是用来打击我的信心。每当我觉得自己js水平还可以,的时候,它就会在不经意间跳出来,给我一耳光。例如这个,...

1878
来自专栏ACM小冰成长之路

HDU-5933-ArcSoft's Office Rearrangement

ACM模版 描述 ? 题解 给定 NN 个数要求划分为 KK 份,一共有两种操作,一种是将相邻两数合并,一种是将一个数拆开两部分。 很明显的贪心模拟,这场比赛好...

1936
来自专栏技术博客

设计模式之前奏(UML类图)

本人菜菜一个,最近一直在博客园游走闲逛,看到了各种技术,各种各种……。便看到了大话设计模式这本书,下了电子版的看了看第一章,感觉相当不错,不仅通俗易懂,而且与实...

813
来自专栏二进制文集

《代码整洁之道》

写整洁代码,需要遵循大量的小技巧,贯彻刻苦习得的“整洁感”。这种“代码感”就是关键所在。有些人生而有之。有些人费点劲才能得到。它不仅让我们看到代码的优劣,还予我...

742
来自专栏函数式编程语言及工具

Scalaz(0) - 写在前面

  面向对象编程范畴(OOP)从80年代C++到90年代java的兴起已经经历了几十年的高潮,是不是已经发展到了尽头,该是函数式编程(FP)开始兴旺发达的时候了...

1696
来自专栏IT派

如何让你的代码整洁漂亮?

IT派 - {技术青年圈} 持续关注互联网、大数据、人工智能领域 内容来源: 译者,飞鱼; 译文,http://www.zcfy.cc/article/ho...

3828
来自专栏牛客网

滴滴和美团面经(后台研发)

目前滴滴和美团都完成了四面,两个公司面的都是后台研发,美团三面面试官说是做外卖机器人(类似无人车),个人比较感兴趣,如果发offer,就签约美团结束秋招了。找工...

5119
来自专栏python+iOS学习交流

2018最新最全BAT 全套高级iOS面试题以及面试资料强势来袭

一千个读者眼中有一千个哈姆雷特,一千名 iOS 程序员心目中就有一千套 iOS 高级面试题。本文就是笔者认为可以用来面试高级 iOS 程序员的面试题。

1662
来自专栏牛客网

cvte面经

一面:现场面去的很早明显焦虑并问不到面经(50分钟) (1)自我介绍这里介绍完提到自己熟悉的知识,项目 (2)项目介绍项目中遇到的难点如何解决的 (3)集合框架...

3697

扫码关注云+社区