Java漫谈1

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

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

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

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

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

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

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

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

基于类

什么是类

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

基于类的好处

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

面向对象

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

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

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

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

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

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

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

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏华章科技

Bruce Eckel:我最喜欢Python,Kotlin或将取代Java(附演讲全文+PPT)

这两天,Bruce Eckel来到中国,这是他的中国首秀。5月22日,Bruce Eckel发表了他的最新演讲,与在场的1000多人分享关于编程语言的一些思考,...

3004
来自专栏一个会写诗的程序员的博客

编程范式 (Programming paradigm)

范,模范、典范也。范式即模式、方法。常见的编程范式有:函数式编程、程序编程、面向对象编程、指令式编程等。

3491
来自专栏Python小屋

Python实现大自然数分解为最多4个平方数之和(1)

问题描述:任意大自然数,总是能分解为最多4个平方数的和,所谓平方数是指它是一个自然数的平方。例如:72884 = 4^2 + 138^2 + 232^2,337...

2764
来自专栏小詹同学

Python系列之六——拿什么拯救你?我的大脑

我一定是智障了,话不多说,上图上图~ ? 就是这样10个选择题,你没有看错,我一定是个智障了~佩服不用穷举,也不用参考网上的大...

3704
来自专栏noteless

抽象工厂模式 创建型 设计模式(四)

所有的ConcreteCreator的返回类型都是Product,因为抽象工厂角色Creator就是返回Product 

632
来自专栏数据结构与算法

2924 数独挑战

2924 数独挑战  时间限制: 1 s  空间限制: 1000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果 题目描述 Descripti...

2953
来自专栏专注研发

poj-1006-Biorhythms

人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天、28天和33天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如...

961
来自专栏深度学习计算机视觉

工厂方法模式

简单定义### 定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。 工厂方法(Factory Method)模式的意义...

3429
来自专栏斑斓

迪米特法则与重构

在面向对象设计的世界里,有一个寻常却又常常为人所忽略的原则——“迪米特(Law of Demeter)”法则。这个原则认为,任何一个对象或者方法,它应该只能调用...

1166
来自专栏NetCore

关于某道C#上机题的OO

前两天在园子里,有人出了一道《关于一道C#上机题的一点想法》,大概的意思呢是利用OO的思想来进行编程,接着又有一位朋友,也写了自己的答案,此朋友非常厉害,从类图...

2286

扫码关注云+社区

领取腾讯云代金券