该内容已被发布者删除 该内容被自由微信恢复
文章于 2017年2月11日 被检测为删除。
查看原文
被用户删除
其他

连载:一个屌丝程序猿的人生(39)

2016-10-26 伯乐专栏/左潇龙 程序员的那些事

(点击上方公众号,可快速关注)


来源:伯乐在线专栏作者 - 左潇龙

链接:http://blog.jobbole.com/106922/

点击 → 了解如何加入专栏作者


【主页君留言:各位无需留言催更,作者更新了,这里会及时推送】


本系列:

(1 ~ 3)(4 ~ 5)(6 ~ 7)(8)(9)(10 ~ 11)(12)(13)(14)(15)(16)(17)(18)(19)(20)(21)(22)(23)(24)(25)(26)(27)(28)(29)(30)(31)(32)(33)(34)(35)(36)(37)(38)


有史晓玲这么一位颜值不错的妹子常伴左右,换作一般人还真的很难静下心来学习,但是林萧却很清楚,在眼前的情况下,撩妹和学习到底孰轻孰重。


更何况,这妹子可是怀了张亮的孩子的,就算是要撩妹,林萧也还没到饥不择食的地步,拿自己兄弟的妹子下手。


这事儿特么不地道啊!


于是,心无旁鹭的林萧,在结束了Java基础的学习之后,立即便开始了接下来的视频学习。


……


紧接着Java基础的一章,是Java高级特性。


不知为何,程序猿总会对这些听起来很牛逼的词汇感兴趣,因此,一看到“高级特性”四个字,林萧立马就来了精神。


然而事实上,真正牛逼的东西,往往不是那么好理解的。至少对于一个初入Java领域的菜鸟来说,“高级特性”这四个字还是太过深奥了一些。


就说“高级特性”中最开始的内容吧,面向对象的三个重要特性,继承、封装以及多态。


其中继承其实已经是最好理解的一个了,原因是继承在现实中的例子实在是太多了,最典型的就是父子之间的关系。


儿子会继承老爸身上某一部分的特征,并且还会拥有老爸身上所没有的一些特点。这正是诠释着,子类可以继承父类的属性和方法,并且通常还会拥有父类所没有的一些属性和方法。


与此同时,儿子虽然可以继承老爸的一些特征,但也并不是所有特征都可以继承的。因此,这也正是诠释着,子类只能继承父类部分的属性和方法,一些隐藏比较深的,例如被private所修饰的,子类也是继承不了的。


知道继承的以上两点,对于一个新人来说,就基本上足够了。至于一些有关继承比较高级的用法,例如模板方法模式这种的,就只能在以后的路上,慢慢研究去了。


封装相较于继承,会比较难理解一些。不过对于很抽象很难理解的知识,林萧有自己的办法,那就是找相似的事物。


因为林萧相信,世间万物都是相通的,任何一个知识点,你总能在其它领域找到相似的。


就说谈恋爱这回事吧,都说没有最好的,只有最合适的,这句话,其实也同样可以适用于找工作,这就是一个最简单的道理相通的例子。


知道了这一点之后,如何找到一个合适的例子,就比较关键了。


关于封装的现实例子,其实说起来还是蛮多的。就说叫外卖这件事吧,其实卖家就充分体现了封装的思想。


那么卖家到底封装了哪些东西?


很显然,大致包括了买菜、洗菜、做饭、送饭等等一系列的动作,而你只需要付钱给外卖员,就可以吃到香喷喷的饭菜。你不需要知道如何买菜,如何做饭等等这些琐碎的事情,你要做的就一件事,就是掏钱!


这就是现实中封装的思想,也就是所谓的一站式服务。


对应到编程世界,其实也是一样的,一个类要尽可能把自己的服务细节隐藏起来,不对外部暴露,让外部的类只需要“付钱”,就可以方便的调用服务即可。


隐藏细节,这其实就是封装的核心思想了。


三大特性中,继承和封装都说完了,还剩下最后一个特性,也是最难理解的一个。


多态在很多人刚接触Java时,都难免会觉得懵逼,林萧也不例外。尽管他一直在试图理解“不同的类型有不同的表现”这句话,但其实他在当时,始终都没有理解到多态的本质。


多态的本质其实用一句话就可以概括,就是“编译时和运行时才决定对象的行为”,俗称为静态分派和动态分派。


很多人第一次看到这两个词的时候,应该比看到多态更加懵逼,但其实沉下心来去想想,这两个词其实非常好理解。


不过理解的前提是,你要非常清楚一个Java程序从编写到运行的过程,简单的说,这个过程就是编译和执行。


而静态分派和动态分派的本质就是,静态分派是编译期间就可以决定的,而动态分派则是执行期间才可以决定的。


要理解编译期和执行期其实也非常好理解,你可以把计算机看做是一个英国人,而你是一个中国人,程序就是你写的一篇文章。


那么计算机要想运行你的程序,也就相当于英国人要想读你的文章。


那就首先得有人把你的文章翻译成英文,这个过程就相当于编译的过程。这个负责翻译的人,在现实里就叫翻译员,而在程序世界里,就是编译器。


当文章被翻译成英文以后,英国人就开始阅读你的文章,也就相当于计算机开始运行你的程序。


而对于Java程序来说,编译器其实就是javac,而所谓的计算机,其实就是JVM。


理解这个最基本的编译和执行的过程,静态分派和动态分派就很好理解了。而理解了静态分派和动态分派,多态就非常好理解了。


当然了,这些知识,对于初学Java的林萧来说,当然是不太可能彻底理解的,不过这其实并无大碍,学习本身就是一个循序渐进的过程。


……


说起来,林萧也算是够拼命的,自从开始培训以后,几乎就变成了足不出户的骨灰级宅男,与当初在家里玩游戏的时候,简直是如出一撤。


一天下来,除了上厕所和拿外卖以外,林萧几乎可以做到坐在椅子上一动不动。这种惊人的毅力和懒的程度,如果不是以前玩游戏早已经习惯了的话,说不定林萧还真坚持不下来。


但是,这种生活虽然看起来挺苦逼的,林萧却非常乐在其中。而且,游戏所带来的快感,与知识所带来的快感相比,始终缺少了一种充实感。


这种充实感,可以帮你驱散孤独,也会让你有种,未来掌握在自己手里的安全感。


此时此刻,林萧心中多少有些明白了,为什么有人说,成功的男人要学会享受孤独。因为享受孤独的过程,其实就是你充实自己的过程。


然而,就在林萧尽情享受孤独,疯狂得充实自己的时候,一个故人却再次打断了这种疯狂而又宁静的生活。


她,来了。



专栏作者简介( 点击 → 加入专栏作者



左潇龙: 一个坚信技术改变世界的屌丝程序猿。

粉丝交流 Q 群:475044650

打赏支持作者写出更多好文章,谢谢!



关注「程序员的那些事」

看更多精选文章

↓↓↓

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存