这几天看着C++,也在看UML视频,感觉自己在面向对象这一方面很欠缺,理解的也不深刻。所以就来做个小总结,加深一下印象和理解。
面向对象比起面向过程来说,它的出发点更能更加直接地描述客观世界中存在的事物以及他们之间的关系。但是面向过程过于强调分析问题的功能却忽视了数据和功能之间的联系。
面向对象有以下几个特征:
1.对象 :是一个自包含实体,用一组可识别的特性和行为来标识。
比如:
电视机 空调
2.类:是具有相同的属性和功能的对象的抽象的集合,
如图:
电视机和空调有相同的属性他们可以抽象出来:家电
3. 封装 :隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读取和修改的访问级别。
说白的就是封装将自己的属性设为private,但是对于一些方法设为public,可以让外界通够接口对其进行访问。
例如:
苹果,苹果有红的有绿的,但是它的味道只有苹果知道,他把自己的酸甜封装起来,通过外表让人产生想吃的欲望,这是只有人们去吃一口才知道苹果的真正味道。
4.继承 :一个对象直接使用另一对象的属性和方法。他们之间是父类与子类的关系。
比如:
图中的电视机,空调都有家电共同的属性(通过电工作,都有功率,都是日用电器等),同时还有自己的特殊的一些属性(电视机:可以看电视,有声音有画面。 空调:可以制冷也可以制热)
5.多态:不同的对象接受得到统一消息产生的行为不同
比如:
图中的遥控器给了电视机和空调同一个命令,就是打开。但是他们却产的不同的行为。电视机播放画面,空调制冷或者制热。
当内容抽象的难以理解的时候,试着去举一个现实中的例子,这样会更容易理解。知识来源于生活。