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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ordinary 中级黑马   /  2015-4-3 00:29  /  1019 人查看  /  16 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文



封装:
首先,属性可用来描述同一类事物的特征,行为可描述一类事物可做的操作,封装就是要把属于同一类事物的共性(包括属性与行为)归到一个类中,以方便使用.比如人这个东东,可用下面的方式封装:
人{
年龄(属性一)
身高(属性二)
性别(属性三)

做事(行为之一)
走路(行为之二)
说话(行为之三)
}


继承:
由于封装,使得有共同特征的一类事物的所有描述信息都被归于一类之中,但我们知道,这并不是万能的,有些事物有共性,但还存在区别,比如教师,简单封装起来如下:
教师{
年龄(属性一)
身高(属性二)
性别(属性三)

做事(行为之一)
走路(行为之二)
说话(行为之三)

教书(行为之四)
}
上面对"教师"的封装,与对"人"的封装基本上差不多,只是多了一个特征行为:教书,
教师有与人一样的共性,但我们不能说"人教书",也就是不能把教书封装到"人"之中去,教书是教师的特征行为之一.为了省事地封装教师(代码的复用,这只是继承存在的原因之一),可以让教师去继承人,如:
教师extends人{
教书(行为之三)
}
这样,我们就不用重新定义那些已经被"人"这一个类所封装的那些属性与行为了,而只需要使用继承的方式,在人的基础上拓展教师专有的行为,即"教书"即可把教师描述出来;这样的结果,即是教师也同时拥有"人"之中所封装的一切属性与行为,还拥有自己的特征行为"教书".


多态:
多态的概念发展出来,是以封装和继承为基础的(其实我觉得抽象也应该算是面向对象的大特征之一,要封装,抽象是必须的)

简单的理解一下多态,比如:
人这个类,封装了很多人类共有的特性,
教师是人的子类,继承了人的属性与行为,当然教师有自己的特征行为,比如教书授课;
学生是人的子类,继承了人的属性与行为,当然学生有自己的特征行为,比如学习做作业;

现在,当我们需要去描述教师与学生各自的行为的时候,我们可以分开来说"教师在授课","学生做作业",但如果我们要站在抽象的角度,也就是从教师与学生的父类"人"的角度,来同时描述他们各自的行为时,我们怎么描述?"人在授课"?"人在做作业"?这是不是怪怪的很不合适?不合适的问题就在于,对于行为主体,我们使用了抽象层次的东东"人",而对于行为本身,我们却使用了具体的东东"授课"与"教书".怎么解决呢?那就需要解决抽象与具体的矛盾问题.
既然是站在抽象在角度来描述,那我们把行为抽象一下,不就能同时描述了吗?比如"人在做事"(教师授课与学生做作业都可以说成人在做事),这样就解决了抽象层次与具体层次之间的矛盾.

到了这一步,我们可以把两个描述:"教师在做事","学生在做事"两者统一为"人在做事",
然后,我们可以在"教师"的"做事"行为中去调用教师自己的特征行为"授课",
在"学生"的"做事"行为中去调用学生自己的特征行为"做作业",
所以,当调用"人"去"做事"的时候,如果这个人是教师,那他所做的事实际上就是"教书",
如果这个人是学生,那他所做的事实际上就是"做作业".
也就是说在这里"人"是多态的,在不同的形态时,特征行为是不一样的,这里的"人",同时有两种形态,一种是教师形态,一种是学生形态,所对应的特征行为分别是"授课"与"做作业".

完成上述的描述过程,其实就是多态机制的体现.

多态,就是站在抽象的层面上去实施一个统一的行为,到个体(具体)的层面上时,这个统一的行为会因为个体(具体)的形态特征而实施自己的特征行为.

多态比起封装与继承来说要复杂很多,上面的描述很简单,不用去死抠多态两个字,
其实只要明白:
能站在抽象的角度去描述一件事,
而针对这件抽象的事,对于每个个体(具体)又能找到其自身的行为去执行,这就是多态.

16 个回复

倒序浏览
确实挺详细的,受用。谢了。
回复 使用道具 举报
总结挺好的。详细
回复 使用道具 举报
多谢楼主分享!
回复 使用道具 举报
顶一个,看完后理解更加彻底了。
回复 使用道具 举报
点赞 !!!
回复 使用道具 举报
多谢楼主分享!点个赞!
回复 使用道具 举报
66666666666666666666
回复 使用道具 举报
说的真好,豁然开朗
回复 使用道具 举报
Edison_Heung 发表于 2015-4-3 00:31
确实挺详细的,受用。谢了。

我也一样
回复 使用道具 举报
赞一个,谢谢分享
回复 使用道具 举报
多谢分享~
回复 使用道具 举报
标记  学习了
回复 使用道具 举报
赞一个!!!
回复 使用道具 举报
1111111111111111111111111111111111111111111111
回复 使用道具 举报
1111111111111111111111111111111
回复 使用道具 举报
好多啊1111111111111111111111111
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马