一句话说明什么是面向对象?你个土鳖,你们全家都是土鳖!
好像有人说过这样的话,当头棒喝的方式虽然情感上不易接受,但记忆效果十分显著。
好吧,如果你觉得“土鳖”实在难听也不能准确定位你的档次,你可以自行将其替换为“土豪”,whatever。
面向对象思想有三大要素:封装、继承和多态。
- 封装:不管你是土鳖还是土豪,不管你中午吃的是窝头还是鲍鱼,都在你肚皮里,别人看不到你中午吃了啥,除非你自己说给他们听(或者画给他们看,whatever);
- 继承:刚说了,你个土鳖/豪,你们全家都是土鳖/豪。冰冻三尺非一日之寒,你有今天,必定可以从你爸爸爷爷那里追根溯源。正所谓虎父无犬子,正恩同学那么狠,他爹正日就不是什么善茬,更甭说他爷爷日成,明白了吗?
- 多态:哲学家说过,世上不会有两个一模一样的双胞胎。即使你从你父亲那里继承来的土鳖/豪气质,也不可能完全是从一个模子里刻出来的,总会有些差别。比如你爸喜欢蹲在门前吃面,你喜欢骑在村口的歪脖子树上吃,或者反过来。当然,也可能令尊爱吃龙虾鲍鱼时旁边有几个艺校小女生喝酒唱歌助兴,你可能更喜欢弄个街舞乐队来吹拉弹唱。
话丑理端,现在明白了吗?希望没有伤害到你幼小的心灵,嘿嘿。
或者这样理解:
一.封装
封装是面向对象编程的核心思想,将对象的属性和行为封装起来,而将对象的属性和行为封装起来的载体就是类,类通常对客户隐藏其实现细节,这就是封装的思想。例如,用户使用电脑,只需要使用手指敲击键盘就可以实现一些功能,用户无须知道电脑内部是如何工作的,即使用户可能碰巧知道电脑的工作原理,但在使用电脑时并不完全依赖于电脑工作原理这些细节。
二.继承
类与类之间同样具有关系,如一个百货公司类与销售员类相联系,类之间这种关系被称为关联。关联是描述两个类之间的一般二元关系,例如一个百货公司类与销售员类就是一个关联,再比如学生类以及教师类也是一个关联。两个类之间的关系有很多种,继承是关联中的一种。
三.多态
多态性允许以统一的风格编写程序,以处理种类繁多的已存在的类以及相关类。该统一风格可以由父类来实现,根据父类统一风格的处理,就可以实例化子类的对象。由于整个事件的处理都只依赖于父类的方法,所以日后只要维护和调整父类的方法即可,这样降低了维护的难度,节省了时间。
在提到多态的同时,不得不提到抽象类和接口,因为多态的实现并不依赖具体类,而是依赖于抽象类和接口。