上回书说道(上回书在世说新语:什么是面向对象(之一 封装)),面向对象的第一大特性,封装。哥通过一个令人恶心的垃圾袋的例子,让亲们了解到了封装是什么,应该封装什么,和封装目的。概括的说,封装就是把 一堆相似的东西包在一块,因为东西是相似的,所以用“类”来表示封装好的东东。这次哥准备解释一下面向对象的三大特性之二继承。
继承是什么呢? 如果说起现实生活中的继承,相信是个人都知道,继承能使得一个空空如也的单身汉一下子获得了他“戴迪”留给他的N多东东,比如金钱,比如权利,比 如....and so on。哥喜欢举例子来表达观点,富二代,对不起,哥相中你啦,你要成为哥笔下的实例啦。先扯点远的,据说遥远的万恶的资本主义国家盛产一种天赋人权,人人 平等的思想,又据说距东胜神州十万八千里的西牛贺州的大雷音寺盛产众生平等的佛学。其实那些富二代,生出来和我们普通大众没有任何两样,都是肩膀上面扛了 个脑袋,所谓众生平等既是这样。但是他们的”戴迪“或者“戴迪”的“戴迪”牛B啊,摸爬滚打许多年,积累了巨额的财富和人脉资源。那些富二代,通过继承一 下子获得了他爸,他爸的他爸,他爸的他爸的他爸......。靠,楼主,你还有完没完,啥时候能说到头啊。亲们 总是那么着急,都想直奔主题,哥偏不如你愿,继续继承,说到哪啦? 对,说到猴子他爸的猴子他爸......楼 主你也太雷了吧,再说就成达尔文的进化论啦。哈,哥其实想说的就是进化论,不要怨哥东拉西扯的,谁让哥的思维是那么的发散呢。不能再扯啦,再扯的话,亲们 估计要扔鞋啦,我可不是BUSH,没有修炼过非凡的躲鞋秘籍。其实,进化论就是继承的典型代表,从最原始的单细胞生物,叫什么的, "草鞋虫" , 经过了N重继承,终于变成了现在富二代,官二代的浑身长毛的祖宗。说了半天,继承是什么呢,继承就是一种方式,是一种能让你一下子获得很多东西的一种方 式。面向对象中的继承也是这样,你不需要从0开始,就能一下子获得N多已有的职能。
楼主,既然继承那么牛B,你快告诉我们怎么继承吧? 亲们不要着急,让哥慢慢道来。 俗话说的好啊,天下没有白吃的午餐,继承也是一样。想继承是不是?那你得先想好是准备当儿子呢,还是儿子的儿子,还是........,不说啦,再说下 去,又要子子孙孙无穷溃也啦。也就是说想获得继承,你得学认爸,雷吧。楼主你太雷人了吧,你就是帮助大家理解一下面向对象,怎么扯到“认爸”上面去啦。呵 呵,不是哥喜欢扯淡,事实就是这样。 任何一种程序设计语言,继承的第一步就是认爸,只有认好了爸,爸才愿意把自己辛苦实现的功能留给他的儿子。即使程序设计语言比现实中的继承还厉害呢,比如 c++有三种继承方式,public,protected,private。public就是正室的娃,可以直接拿着老爸的招牌去外面混吃混合(直接使用 老爸的接口)。 protected就差了点,估计是侧室的娃,从来不敢拿着招牌去外面混,只能自己偷偷的使用老爸的功能,不过还好,还可以把老爸的功能当成传家宝传给自 己的子子孙孙。private就惨了点,哥估摸着肯定是私生子,老爸的功能只能自己偷偷的用,还不能留给自己的子子孙孙,呵呵,其实哥挺同情你的,但是没 办法啊,谁让你是私生子呢,人家古代皇帝册立储君还有立嫡立长的说法呢。
楼 主,继承既然那么牛B,那是不是意味着我们在coding中要尽量多的使用继承啊? 呵呵,俗话说的好啊,世间万事万物都有其两面性,连科学技术都是一把双刃剑,何况继承乎? 亲们不能只知道继承的优点,继承也是有好多缺点的,比如那个叫嚣“我爸是李刚”的那娃,就一不小心从老爸那里继承了一些不良习惯,最后害人害己。因为继承 是你控制不了的,一旦你选择找个”类“爹继承一下,那么除了老爹私有的一些东东之外(比如李刚的小蜜,那娃就不能继承),你继承的可是老爹所有的优缺点 呢。不过好在面向对象领域,可以自由选择老爹,不像现实生活中,一般情况下是不允许随便认爹的。继承用的好不好,关键还是看你对“爹(类)”的认识啦,俗 话又说的好啦,老子英雄儿好汉,老子乌龟儿八蛋,尽量选择那些英雄爹们继承,尽量不选择乌龟爹们继承,继承之妙,存乎一心,切记,切记。
楼 主,原来继承也不是那么神奇啊,我是个编程菜鸟,我不知道什么时候该用继承,什么时候不用继承,该怎么办啊? 一般的有点经验的coder会告诉你,当是“Is a”的关系时,你就应该采用继承。那估计菜鸟们又要问什么是“is a“啦。呵呵,谁让菜鸟总有无数的问题呢。让哥来告诉你一个窍门,继承不适合菜鸟,对菜鸟真正有用的是组合。其实对于编程老鸟也是一样,要尽量少用继承, 能不用就不用,多用组合。
楼 主,我是coding王子,我非常善于使用继承,也能用的比较正确。唯一不理解的是,继承能继承多少几个层次啊,但从语言上看,貌似继承无极限啊。呵呵, 让哥来告诉你,只要你不是设计什么framework类的东东,事不过三,也就是最多继承三次,切记。为什么啊,楼主??? 靠,你听过”富不过三“的俗话没,除非你是大牛,要不然,继承多啦,容易扯着蛋,扯着蛋会有什么后果,你知道吗?
楼 主,继承那么不好用,他为什么能成为你说的三大特性之一啊。小弟,你这句话很有水平啊,让哥慢慢道来。面向对象最大特性之一就是封装,但是仅仅封装的话, 你只能自己玩自己的,只能获得很多孤零零的类。继承有利于代码的复用,继承加上多态会让整个世界变得美好,变得very good。
楼主,多态是什么啊??,这么着急问问题啊。多态,哥将在下一节讲,哥码字都码了一个多小时啦,都凌晨啦,哥要睡觉啦。还是那句老话,欲知后事如何,且听下回分解。