A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 一曲流觞 初级黑马   /  2019-6-24 18:14  /  934 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

众所周知,Java是一门面向对象的语言,那么什么是面向对象?更简单的说,在编程的范畴里,什么是对象?这些问题是我们在学习任何一门面向对象的语言时都会面对的问题,解决了这些问题,更有助于我们学习面向对象语言,在本文中就是更有助于我们学习Java。

在学习面向对象的时候,有一句非常经典的话,对于我们理解对象以及面向对象都非常有帮助,这句话是“施法于自然,万物皆对象”。说的直白一点,就是把你看到的东西都当成对象,你的手机是对象,你的车是对象,甚至连你自己也是一个对象。如果在脑海里构建了这样的概念,那么你就会发现,自然界的组成和程序的组成就一样了。自然界是由我们这些“对象”组成的,程序也一样,也是由对象组成的。自然界中的人通过人的语言来交流,动物通过动物的语言来交流,程序中的对象之间也能相互发送消息和调用。自然界中,人包含头、躯干、四肢等不同的对象,程序中一个对象也可以包含其它不同的对象。自然界中各种各样的人都属于人这一类型,汽车,自行车等都属于车这一类型,程序中也是一样,各种不同的对象也有它具体的类型。自然界中,中国人都能听懂普通话,英国人都能听懂英语,程序中也是一样,同一类型的对象都能接收同样的消息。如果这些概念相同了,我们对于自然界的理解就能应用到程序上,那么对于编程来说,我们的学习成本就降低了,对于程序本身来说,维护成本也就降低了。把这些概念总结出来就是下面几句话:

1、万物皆为对象。

2、程序是对象的集合,它们通过发送消息来告知彼此所要做的。

3、每个对象都有自己的由其它对象所构成的存储。

4、每个对象都拥有其类型。

5、某一特定类型的所有对象都可以接收同样的消息。



这五句话所描述的就是面向对象程序设计的方式和特性,请深入思考并牢记。我们依照这样的方式来编写程序就是面向对象编程。

搞清楚了面向对象之后,我们再回到对象,联想自然界,灯是一种比较普遍和简单的对象,但是它作为一个对象还不够,它应该可以和自然界的其它对象相互作用,拿人来说,人可以操纵灯,比如开灯和关灯,但是开灯和关灯并不是人自己的功能,而是人向灯发出的请求,那么由此我们就可以知道,灯需要提供开灯和关灯两个功能给外界其它对象,再返回到程序中,我们由此就能得出结论:每个对象都有一个接口。在程序中灯向外界提供的开灯和关灯的功能,我们称之为接口,再想象一下,灯通过这两个接口和外界对接,外界也通过这两个接口和灯对接,所以这两个功能就称为接口。

在程序设计中,我们更应该把每一个对象都想象为服务的提供者。每一个对象都提供一种简单的服务,那么我们设计程序就是把每一种简单的服务组合起来,拼凑成一个大的服务,那么在更大的系统中,我们的程序又像是一种简单的服务,这样一来我们的程序的可重用性就提高了。

在自然界中,灯只提供了开灯和关灯两个接口,人只要知道灯提供了这两种服务就可以很好的操纵灯,其实人并不关心灯是怎么亮的,又是怎么灭的。在程序中,对于每个对象来说,只要提供接口给外界就好了,外界其实并不关心怎么实现的,它只要知道这个对象提供了这样的一种服务就行了,这样一来具体的实现被隐藏了,那么对于我们程序来说,安全性就提高了,联想到自然界就是人不能把灯拆了,把灯怎么亮的这个实现方式给修改了,这样的话,对于灯来说,安全性就提高了,它很好的保护了自己的内部实现。

在自然界中,一盏灯,你可以用,我可以用,谁都可以用,那么这个灯就具有复用性。在程序中也是一样,我们已经创造出了一种对象的类型,那么这种类型就可以被重复使用,可以重复的创造出很多对象供我们使用。

在自然界中,灯有很多种,所有的灯都具有的功能就是开和关,把这作为普通的灯,那么有些功能比较多的灯,在这两个功能的基础上,还有一些更高端的功能,把这个概念应用于程序中就是继承,这种更高端功能的灯继承自普通的灯,程序中就是子类继承父类,在父类原有功能的基础上还提供一些其他的功能。这种更高端功能的灯因为太高端了,所以可能开和关的具体实现上有别于普通的灯,这种现象在程序中就是方法的覆盖。

在自然界中,一盏灯接在电源上,那么不管是普通的灯还是更高端功能的灯,都可以接在电源上,这些灯是可以互换的。在程序中父类出现的地方,其它任意子类也都可以出现,这些对象是可以任意互换的。

在自然界中,一盏灯不管功能再多,也只是一盏灯,它也成不了一个人。在程序中,子类只能继承自一个父类,孩子只能有一个爸爸不可能有多个爸爸,这就是单根继承结构。

在自然界中,我们上学的时候都是一个班一个班的。在程序中,一个班就相当于一个容器,我们在班中的每一个人就相当于容器中的元素。

在自然界中,人是有寿命的,都有出生和死亡,如果把一个人和自然界的关联都切断,那么这个人就死了。在程序中,对象也有生命期的概念,如果一个对象和其它的任何对象对没有关联了,那么这个对象就“死了”,那么就可以被回收掉。

在自然界中,人不可能时时刻刻都保持正确,总会有错的时候,出错了我们就要处理,如果不处理错误就会被无限放大,那么就玩不下去了。在程序中,程序处理到某些步骤也有可能出现异常,如果这些异常不处理,那么程序也就运行不下去了,所以程序需要异常处理。

在自然界中,我们不可能一段时间只干一件事,我们基本上是很多事情一起做的,比如边洗澡边听歌。在程序中,并发编程也是一个很重要的概念。

8 个回复

倒序浏览
Dream most deep place, only then the smile is not tired. ◆ 梦的最深处,只有微笑不累。加油
回复 使用道具 举报
预测未来最好的方法就是去创造未来。
回复 使用道具 举报
今天很残酷 明天更残酷 后天很美好,坚持:5_229:}
回复 使用道具 举报
一个人幸运的前提,其实是他有能力改变自己。嗯,来到这里的我们都是幸运的吧?
回复 使用道具 举报
不要等待机会,而是要创造机会。现在我来了,希望我们都可以坚持,早日用知识达到暴富
回复 使用道具 举报
只要朝着一个方向努力,一切都会变得得心应手。加油
回复 使用道具 举报
故天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为,所以动心忍性,曾益其所不能。
回复 使用道具 举报
故天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为,所以动心忍性,曾益其所不能。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马