写这篇文章的目的是为了让大家能够更全面、更直观、更深刻的理解面向对象的编程思想,使我们在编程的道路上少一些弯曲不平。本篇,是我多年经验总结的精华所在,可谓句句锦绣,字字珠玑,而并非网上荡来的文章夸夸其谈,哗众取宠。当然,个人的总结是主观意识上的理解,因此难免会有一些漏洞及错误,也还愿、请大家不吝不厌,提出宝贵的意见,毕竟交流会让我们不断的进步。
周众所周知科学技术日新月异,科学发展不断拓展。作为新时代的我们,只有不断学习思考与探索创新才不致于落伍于世界科技之林。我们计算机科学亦是如此。 当今社会的编程语言可谓百家齐放,编程语法百家争鸣。那么,问题来了,编程语言哪家强?好吧,在这里我要说的是,刨根寻底学思想!!思想搞明白了,再去学习一们或者几门编程语言,你会发现学习的过程是如此的行云流水,信手拈来。为什么?你已经掌握了编程思想,再去学其编程语言,无非是学习一种的语法格式了。
我在这里不会和大家讨论怎么去用C++、C#或JAVA,也不会讨论怎么去学他们。我要和你讨论的是怎么去理解面向对象思想。其中涉及到的“类、对象、继承、属性、方法、静态、重载、隐藏、重构、声明、定义、初始化、赋值”等相关技术我不会详尽阐述,让大家知道,听说了就行。至于更详细的技术内幕,就请大家私下参考相关书籍学习交流再深入研究,因为我今天的目的就是让大家更好的理解面向对象思想。
如何去提高效率?重复使用资源,把别人的东西拿来就用。这不是偷懒,而是借用,牛顿说的好,之所以我看的更远,因为我站在巨人的肩膀上。我国荀子亦有云“假舆马者,非利足也,而致千里;假舟楫者,非能水也,而绝江河。君子非性异也,善假于物也”。对我们来说,最大的资源莫过于先贤为我留下的智慧结晶,掌握了思想结晶,在今后学习生活中势必事半功倍。
类与对象的初步探索:
我认为,无论是面向过程的语言也好,面向对象的语言也罢,首先说的都是类和对象。 “这个世界是由什么组成的?”,对于这个问题如果,仁者见仁智者见智,不同文化背景,不同探索方向便会有不同的答案。化学研究者会认为这个世界是由分子、原子、离子等化学物质组成的;画家也许说这个世界是由不同的颜色所组成的,各抒己见,众说纷纭。我觉得分类学家的思考方式最为贴切,他们认为这个世界是由不同类型的物与事所构成的,与面向对象的思想有不谋而合,异曲同工之妙。站在分类学家角度来思考这个世界,那么,这个世界是由动物、植物等组成的,同样动物又分为单细胞动物、多细胞动物、哺乳动物等,哺乳动物又分为人、大象、老虎……
好,综上所推,“类”的概念,呼之欲出。那么什么是“类”呢?还是很抽象对吧,那好,我们先来讨论另一个问题,“什么是人类?”
首先让我们来探究一下人类所具有的一些特征,这个特征包括属性(一些参数,数值)以及方法(一些行为,就是人能干什么)。每个人都有身高、体重、年龄、血型等一些属性。人会思考、会劳动、能创造原自然界没有的东西等一些方法。人之所以能区别于其它类型的动物,是因为每个人都具有人这个群体的属性与方法。这么说应该明白了吧,“人类”就是一个抽象的概念,它只能依附于所有的人的存在而存在。试想一下,如果没有了人,那么再来说“人类”这个概念似乎毫无意义。我们之所以提出“人类”的概念,是因为我们可以通过“人类”来了解每个人,每个人都是具有“人类”这个群体的所有属性与方法的对象,而这个对象“人”是实际存在的实体。理解了“人类”概念,我们来看一看老虎,老虎不具备人“人类”的属性与方法,老虎不会直立行走,不会使用工具等等,所以说老虎不是人。
现在再回想一下刚刚提出的问题,究竟什么是“类”?现在想必大家都茅塞顿开、豁然开朗。对,没错,“类”就是描述了一组有相同特性(属性)和相同行为(方法)的集合。在程序中,类实际上就是数据类型。例如:整数,小数等等。整数也有一组特性和行为。面向过程语言与面相对象语言的区别就在于,面向过程语言不允许程序员自己定义数据类型,而只能使用程序中内置的数据类型。为了模拟真实世界,为了更好的解决问题,而我们往往需要创建解决问题所必需的数据类型,面向对象编程思想应运而生、蓬勃发展。
深入探究面向对象思想:
有了上面细腻而形象的描写与阐述,现在我们就可以深入的来挖掘类的内部,看看它究竟是如何实现的?面向对象的编程思想最大的特色就是可以编写自己所需的数据类型,以更好的解决问题。我们必须要搞清楚“类,对象,属性,方法它们之间的关系”。就像前面我所说的, “人类”是什么也做不了的,它不实际存在,只依附于人的存在而存在。由此可知,“类”就是对对象的描述,是抽象概念。对象从类中产生出来,是实实在在存在的、具体的,因此,对象具有类所描述的所有的属性以及方法。或许又有点晕头转向,不知所措,好,我再举个例子(某一天晚上我跟赵静、张杰也举过这个例子)。例如吃饭这个行为方式,怎么样实现“吃饭”呢,一般我们的思维模式就是,把饭煮熟,用碗盛饭,拿筷子,然后一口一口的吃饭。对,描述的还算详细,但我想说这是面向过程的思维模式,容易想到,却难以全面。下面我来说说向对象的思维方式。首先,吃饭,需要一个主体来实施这个行为,因此我们需要一个“类”,这个类中有“吃饭”这个方法。我们要完成吃饭,就用“类”产生一个对象,通过对象来调用类中吃饭的方法,就可以完成吃饭。这时候,我相信大家肯定疑问重重,还是没实现吃饭这个方法呀,仅仅只是调用了原有类的方法,如果原本就没有这个类和类种方法,又该如何?很好,这个问题我想过,大家也想过,我想那些编程语言的创始人肯定也想到过,他们已经将大部分的方法写好并进行了封装,我们只需要通过上述的方式调用即可。现成没有的功能方法,我们也可以按照面向对象思维方式来创建一个类,再为这个类赋予我们需要的方法,以后我们就可以通过类产生对象来调用相应的方法。
实例展示:
说了这么多,让我们来看一个实例吧。篇幅有点长,这个例子我放在面向对象编程思想(二)来讲解吧。
转载时请注明出处及相应链接,本文永久地址:https://blog.yayuanzi.com/5023.html


微信打赏

支付宝打赏