友情提示:380元/半年,儿童学编程,就上码丁实验室。
各位小伙伴大家好:
说到面向对象编程OOP
(Object Oriented Programming),
就不得不谈它的三个基本特征:封装、继承、多态。
本期我们就一起来了解一下继承的相关特性,首先来看一段代码:
这是我们前面学过的知识:定义一个类,包含有初始化方法和实例方法。之后实例化一个对象,然后调用它的实例方法,输出相关提示内容。
第一期我们说过面向对象编程是对现实世界所做的抽象,那么类的继承又是怎么回事呢?
比如,上面我们定义了一个Animal类,这个Animal类就是含有相同属性的事物的抽象,比如都能动,有生命,会死亡等。
但如果把人和鸟归于同一个类就显得有点牵强了,所以我们就可以在此基础上继续进行细分。
而从Animal类的基础上细分出来的类,如:Dog,就叫Animal的子类,而Animal则称为Dog类的父类。
父类中的属性比如:会动、有生命等,子类可以直接使用而不需要再重新定义,这是的继承的作用。
废话了一大堆,百闻不如一见,下面来看个例子。
上图的代码中,我们在Animal类的下面,重新定义了一个Cat类。只是在定义的时候比以前我们定义的Cat多了一个参数(Animal),这就Python中继承的语法,表示Cat继承Animal类。
然而在新定义的Cat类中,我们并没有写任何东西。但是从上图的代码中我们看到,使用Cat实例化的kiti对象直接调用了walk方法,而且正常输出了。
这里的walk方法我们在Cat类中并没有写,那么它是从哪里来的呢?答案就是:继承自父类:Animal。
另外,要提醒大家注意一点的是:如果我们在实例化kiti的时候,后面不加参数10,则会报错。
这也是因为在Cat类没有定义初始化方法,但是父类Animal中有定义,所以系统默认调用了父类的初始化方法。
而父类的初始化方法是需要一个参数的,如果我们在实例化的时候没有传递这个参数,则会像下图这样报错,提示缺少一个参数。
正如一个父亲还可以有多个孩子一样,父类也可以被多个子类继承:
在上图的代码中,多个子类继承了同一个父类——Cat和Dog都继承了Animal,所有子类都通过继承获得了父类的方法和属性。
而每个子类又可以拥有各自的专属方法,如Cat中的mew和Dog中的bark,这与现实世界一致。
有关Python中类的继承的特性,本期就简单和大家分享到这里,我们下期继续。
欢迎扫描下方的二维码入群和我交流
转自公众号:
高维数学