seegongsik
编程

什么是面向对象继承

我们用对象做出了“一个东西”(第12课)。可是把狗、猫、鸟都做成对象,名字、年龄、吃东西就会一遍遍重复出现。把重复的共同点集中到一个地方,再让它们各自继承下去,这就是继承。

01

一再重复的部分

狗、猫、鸟都能做成对象。
可把三者并排一看,名字·年龄·吃东西三个都一模一样地写着。
等于把同样的东西写了三遍,种类越多,重复就越大。

狗
名字
年龄
吃
猫
名字
年龄
吃
鸟
名字
年龄
吃

按“查看重复”,狗·猫·鸟里同样写着的标签就会一起亮起来。

重复的部分一眼就能看出来。
像这样在每个对象里再写一遍同样的东西,改一处就得把所有的都一个个改掉。
那么,这些共同点该集中放在哪里呢?

02

把共同点往上集中

把重复的名字·年龄·吃东西往上提到一个地方。
在那里放一个叫“动物”的父类。
现在,共同点只在动物这一个地方,狗·猫·鸟则成了它下面的子类。

狗
名字
年龄
吃
猫
名字
年龄
吃
鸟
名字
年龄
吃

按“把共同点往上集中”,重复的标签就会升上去,生成一个“动物”父类。

把共同点集中到一处,子类就轻便多了。
可是子类现在不是没有名字·年龄·吃东西了吗?
其实没有消失,而是从父类那里接过来了。

03

原样继承父类的东西

子类会自动拥有父类所有的东西。
狗不用重写,也能原样继承“动物”的名字·年龄·吃东西。
所以狗已经是一只像样的动物了。是接过来的,不是抄过来的。

动物
名字 · 年龄 · 吃
选一个子

选一个子类,父类的标签就会降下来,原样填进去。

狗、猫、鸟都从父类动物那里继承了同样的东西。
可要是三者一模一样,就算不上不同的种类了。
狗会叫,鸟会飞,这些又怎么加上去呢?

04

在继承来的东西上加上自己的

继承来的共同点保持不变,在上面加上自己独有的东西。
狗加上“叫”,鸟加上“飞”。
父类一样,加上的东西不同,狗和鸟就成了不同的种类。

动物 : 名字 · 年龄 · 吃
狗
名字
年龄
吃

按“加上自己的”,子类就会多出自己独有的标签,颜色和继承来的不同。

现在,狗就是“动物的共同点 + 叫”。
接过来的和加上去的合成了一体。
共同的放在父类,不同的放在子类。靠这种结构,最后还附带一个大好处。

05

改一次,全都跟着变

继承真正的力量就在这里。
给父类“动物”加上一个“睡觉”,狗、猫、鸟就一下子都会睡觉了。
不用一个个改子类,全都一起变;重复没了,错误也跟着少了。

动物
名字
年龄
吃
狗
名字
年龄
吃
猫
名字
年龄
吃
鸟
名字
年龄
吃

给父类加上“睡觉”,所有子类就同时有了这个标签。

从值出发,用对象做出“东西”,再用继承把它们整齐地组织起来。
现在我们手里已经有一个相当大的程序了。
可程序总会在某个地方出错,所以下一课我们来学怎样找到错误并改正。

一句话总结继承就是把多个对象的共同部分只放在“父类”里一次,让“子类”原样继承之后,再加上自己独有的东西。父类改一次,所有子类都会跟着变,重复消失,也更加一致。
← 编程
如果有帮助,请支持我们