欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

我的世界

程序员文章站 2022-07-04 19:36:23
...
  一沙一世界,一花一天堂。

  学通一门语言,掌握一种思想,你将获得一个全新的世界!                         ——题记

  这个世界是我们人类以及万事万物赖以生存的空间,那么我们对它了解有多少呢?

这个世界首先是三维的、立体的、有方位的。就像一个房子给我们的一个空间,它的一个角落上有三条互相垂直的边,地面两边分别设为x和y轴方向,垂直向上的那边设为z轴方向。这样我们才能定位Locate、描绘Describe和实现Implementation处在我们现实世界中各个不同方位里的事物。假设我们的世界不是三维的、立体的,那将会是个什么样子?我们将什么都不是,也许是一颗颗毫无关系的尘埃,也将没有这个丰富多彩的世界,没有《万物生》,而是混沌一片。那将会是多么的可怕!

  我们的世界又是四维的、多变的、分代系的。生存在这个三维世界里的万物都并不是一陈不变的,而是时刻都在改变的。海枯石烂、沧海桑田,长江后浪推前浪,事物总是在不断发展变换更替的。有些是改变外表形态;有些是改变它在三维空间里的地理方位;有些是改变它的生命过程,生老病死是它无法抗拒的轮回。《一千年以后》也许世界早已没有我,也不知道这个世界会变成什么样子。

  我们的世界又是五维的、神秘的、微分子的。其实,在这个世界里有很多的东西是我们人类肉眼无法看到的。在这个世界里的万物都是由很微小的分子组成的。我们人类也是一样,每一个时刻的你都是不一样的,体内的分子、物质都是在运动改变、状态都是不一样的。也就是说任何一个时刻的你都不是这一个时刻的你,只是你自己没有发觉到而已。这一刻的你,体内的水份、激素、酶、能量… …等等都在改变,这样才能支配你的一言一举以及情感表达等等。这种变化虽然我们肉眼看不到,但是它们本身是存在的、是无比神奇的。

  其实,在我们古代早已经阐述了这个世界是五维的。比如“天时地利人和”,对男女找对象就遵循这个道理。“天时”代表时间上,“地利”代表三维空间上,“人和”代表微分子上。如果一个男生和一个女生,在这个世界里存在地理方位上的重逢点,但是在时间上不一致,他们还是不能遇见和相识。或者相见相识了但一个是小妹妹或大娘,一个却是大叔或小屁孩。如果地点和时间都相符合了、相逢也相识了,但是没有产生微分子的改变,相互爱慕,产生所谓的荷尔蒙,也就没有传说中的“爱情”,他们最终还是不能在一起或走地长久,或是只能做普通朋友。不是地理相隔,就是时间相错,要么就是“爱”不够。前两点是靠缘份,上帝早有安排;后一点则在人为,一个人要不锲努力而另一个人则要给他(她)以机会,后面再一起努力,将两个人的世界接镶在一起。这样我的世界有你,你的世界有我,将不再有寂寞和孤苦,只有传奇和色彩。愿天下有情人终成眷属!

  我有我生活的世界,然而我还有另一个世界——那就是编程世界。在这里有字符字母、数字、各种类型、运算… …面向对象、面向一切事物。可以对世界万事万物进行定位、描述、实现。一切事物皆对象,它也就是OO(Object-Oriented)面向对象的,要不然它也做不到这一点。

  那么在这个世界里,存在着这么多事物对象,我们是怎么把它们定位、描述和实现的呢?

  首先我们得将它们分门别类,也就是给它们起名字,定义成一个大的Class类,而暂时忽略一个主题中与它无关的那些方面和很细节的部分。例如,人们不会把一辆汽车想象成由几万个互相独立的部分所组成的一套装置,而是把汽车想成一个具有自己独特行为的对象。这种抽象使人们可以很容易地将一辆汽车开到地下车库,而不会因组成汽车各部零件过于复杂而不知所措。我们可以忽略引擎、传动及刹车系统的工作细节,将汽车作为一个整体来加以利用。这样它就具有了Abstraction抽象的特性,我们用一个抽象的名称将众多一类具有某种或某些特性的对象或组成的整体定义成一类。比如把人按性别属性数据抽象出来有男人和女人,暂且管他是歌星、影帝的男人刘德华也好,还是模特、明星的女人林志玲也罢,我们都把他们称为男人和女人;把动物按食肉食草这一行为过程抽象出来分肉食和素食动物,暂且管它是老虎、狮子也好,还是牛仔、羊羔也罢。这样看来,不难理解抽象包括两个方面:一是数据抽象,二是过程抽象。

  当然在这个世界里,我们都有一些属于我们自己的财产,比如某些特殊的外貌形态、行为技能。分别代表了一些字段属性Attributes和过程方法Method。有些是Public公共的,有些是Protect受保护的,还有些是Private私有的。我们得把这些封装起来,针对这个对象把它的财产都封装到一个Class类里面。就像我们住的房子一样,里面装满的都是我们的财产,人家是不能随便看得到拿得走的。他们必须经过我的允许,有钥匙,进得了房子,才能看得到这里面有些什么,可不可以拿去用。这就是一个规范,Public的就是他人可以看到也可以拿来用到的,Protect的就是只有自己和子类看得到用得到的,Private的就是只有自己看到用得到的。这样封装起来,就得符合这些规范,人家是不能够侵犯和违背的,否则就有侵犯“肖像权”和“专利权”的危险。所以它又有Encapsulated封装的特性。封装是把数据和过程包围起来,对数据过程的访问只能通过已定义的界面。现实世界可以描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口Interface访问其他对象。要不然世界里属性数据的不平等,行为过程的不公平,都会造成整个世界的混乱。

  前面我有讲到这个世界是有时间的存在,世间的万物都是多变的、分代系的。既然我们的对象是有生命的、有繁衍的、分代系的,那么我们面向对象编程的类也是有Inherit继承的。有句古语说得好:“龙生龙,凤生凤;老鼠生儿会打洞。”继承是一种联结类的层次模型,允许和鼓励类对象数据和过程的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程就称为类继承。新类继承了原始类的特性,这个新类称为原始类的派生类(子类Sub Class),而原始类称为新类的基类(父类Base Class)。派生类可以从它的基类那里继承实例变量和方法,并且类可以修改或增加新的方法使之更适合它本身特殊的需要。我们可以通过重写Rewrite和重载Reloading父类的方法来适应子类的特殊性,这也是派生子类的必要性。

  正是因为有了抽象,才得以封装;有了封装,才引起继承;有了继承,就产生了Polymorphic多态。多态性是指允许不同类的对象对同一消息,或者同一类的同一对象对不同消息,再者就是同一类的不同对象对同一消息做出响应的状态是多变的、行为是多形式的。我们固定某一个条件,而对象产生的响应差距是很大的。多态性包括参数化多态性和包含多态性。例如:

  ①当一只猫看到一只耗子时,猫会立马去追捕它;可当一只狗看到同样一只耗子时,狗一点都不理采它。可见猫和狗针对同样的一只耗子时做出的响应是完全不同的。

  ②一个你在嗑瓜子时,当嗑到好瓜子,你嗑地津津有味;可当你嗑到坏瓜子时,你就会作死地吐。同样是一个你,当接收到好坏不同的瓜子时,你做出的响应也是完全不同的。

  ③你的父亲是喝酒的,而你一点也不喜欢喝酒。父亲和你是同一类的不同对象,当你们同时看到酒了他会去喝,而你不会。

  ④一个老李,一个大李和一个小李:当大李看到老李时会叫“爸爸”;而你——小李看到老李则会叫“爷爷”。这是为什么呢,还有点意思吧?

  ①②属于参数化多态,③④则是包含多态的情况。

  这就是我的世界——编程世界,它也跟现实世界一样丰富多彩,并与它紧密相连。我热爱我的生活,同样也喜爱编程。我不仅靠它来生计,也想尽多开发出好的软件来尽多人使用,影响到尽多人的工作和生活。只要生命不息,我乐此不疲… …