什么是“面向对象编程”?用邓小平理论指导编程思想

来源:互联网 发布:神作 知乎 编辑:程序博客网 时间:2024/04/30 12:18

邓小平同志有句名言,叫做“不管黑猫白猫,能抓耗子的就是好猫”,生动形象揭示了面向对象编程思想的精髓。

 

黑猫、白猫,在现实世界中就是一个个活生生的对象【1】,他们有相同点,比如都是四个爪子,长胡须,爱吃鱼,会逮耗子;他们有各自的个性,比如花色不同,如厕拉屎的时机不同等等。面向对象编程语言就是充分模拟现实世界,将黑猫、白猫身上相同的特点属性和行为进行抽象,把属性和方法都封装【3】在一个称之为类【2】的东东里面,他们称之为猫类。

 

假设:上帝让黑猫和白猫make love生下了小花猫(程序员就是上帝),小花猫就会继承【4】猫类的特点,小花猫叫做子类,黑猫就叫做父类,子类拥有父类的属性、行为。但父类的属性和方法不一定都会被子类继承,比如:黑猫的黑毛(属性)没有被继承,黑猫扣女的方法(行为)也木有被继承。小猫在继承父类的方法时,虽然所继承的方法名跟父类相同,比如都是吃饭这个行为,但是子类可以改写(override)【5】父类的方法,因为小花猫认为父类的食量太大,不环保。小花猫将父类的吃饭这个行为改为了小食量的。

 

小猫的叫法可以不同,虽然他们都是“叫”这个行为。黑猫用力打小猫,小猫叫声就凄惨了,白猫给小猫奶喝,小猫就很愉悦地叫。传递的参数不同,执行方法效果不同,这个就是重载【6】。

 

假如,我爸是李刚,李刚认为,我是受过邓小平思想的教育的,自己贪污入狱就算了,绝对不能连累子孙,于是,他将贪污这个方法设为了私有(private),祸不及妻儿,子类就无法继承这个方法。

 

还有一种猫,他练辟邪剑谱,把自己阉了,已然是一个final了,注定子孙十八代都断绝了,这个就是静态类【10】,不被继承。

 

两只猫,不停杂交,子孙千千万万都不同,形成了猫类的多态【7】。

 

不幸,老猫被雷劈了,残了,叫不出声音了,但他认为,他生的小猫得有声音才是,于是,他将“叫”当成是一个抽象方法,他自己不实现,留着给子孙实现。有抽象方法的类就是抽象类【8】。

 

邓小平当年大笔一挥,说“改革开放好”,于是广大人民群众就热血沸腾,一把劲都搞经济建设去了。但具体的,什么是改革开放,农民懂个毛,大学生也没有几个人搞得清楚。政策就是方向,就是规定,接口【9】像是政策,要实现这个“十二五规划”人均GDP达到xx水平奔向小康社会新胜利,接口规定的是达到什么样的目标,但不给出具体的方法实现。小平同志才不管具体的实施,实施者是广大人民群众,“人民是真正的英雄”(胡主席语)

 

注释:

1】对象

具体事物的抽象。对象=属性+(对属性操作的)方法

2】类

是具有相同操作功能(方法)和相同的数据(属性)的对象的集合,类是对象的抽象,对象是类的一个具体实例。

类可以被反复调用、重用

3】封装

把对象的属性和方法结合在一个独立的单元里面,尽可能的隐蔽对象的内部细节,只保留一个接口同外界通信。

4】继承

子类具有父类的特征的同时,也有自己的特点。当然父类也有一些自己的特点不想被子类所继承,就用static标识。

5】重写

子类继承了父类的方法,但子类不执行父类的方法,而写了一个跟父类方法名字相同的方法,这样父类的方法就被覆盖了,不被执行,只执行子类自己的方法。

6】重载:方法名字相同,传递的参数不同,执行方法效果不同。

7】多态:因为有了重写和重载,所以就有了多态、

8】抽象类:有抽象方法的类就是抽象类。不能实例化,只能给子类继承。

9】接口:只负责方法的声明,声明的方法不包含方法体

【10】静态类:一个类中,所有成员都是静态成员,即都用static 修饰,该类即为静态类,用final修饰(而不是static)。静态类不被继承,不能实例化。