第13关精华笔记
类的继承和定制
1、类的继承(复制)
类的继承,即让子类拥有了父类拥有的所有属性和方法
2、类的定制(复制后自己看着改)
子类也可以在继承的基础上进行个性化的定制,包括:
- 创建新属性、新方法
- 修改继承到的属性或方法
继承的编写规则
1、继承的基础语法
以上代码的第 3 行, class B(A) 就是我们的继承语句,其中 B 是子类, A 代表着我们的父类。
我们的子类继承了父类,那就是说,父类的所有东西,我们子类都可以拿来用,下面我们来看一下例子:
我们父类 A 定义了变量 name 并赋值延君,而子类 B 继承了 A 但是什么都没操作(pass),我们实例化函数 B 后,实例化对象 b 可以调用我们父类 A 中的 name 属性。
2、类的多层继承
继承不仅可以发生在两个层级之间(即父类-子类),还可以有父类的父类、父类的父类的父类……
上面例子中,类 shanyao 继承了类 shanjiao,类 shanding 再继承了类 shanyao ,即类 shanding 继承了前面两个的所有属性,所以可以正常打印出我们的“七七”、“延君”。
3、类的多重继承
一个类,可以同时继承多个类,语法为 “class A(B,C,D):” 。和子类更相关的父类会放在更左侧,子类创建的实例在调用属性和方法时,会先在左侧的父类中找,找不到才会去右侧的父类找。(可理解为“就近原则”)
以上代码中,类 main 同时继承了我们的类 shanjiao、shanyao、shanding,而根据我们的“就近原则”,我们在调用属性 teacher 的时候,类 shanyao 离我们的子类最近且有定义该类,所以打印出来的结果为 “助教延君最帅”。
定制的编写规则
1、新增代码
在子类下新增属性或方法,让子类可以用上父类所没有的属性或方法。这种操作,属于定制中的一种:新增代码
以上代码中,类 B 继承了类 A ,我们实例化了类 B 后,可以调用父类的属性和方法外,也可以给子类新增子类的属性和方法。
2、重写代码
①、重写代码,是在子类中,对父类代码的方法修改:
以上代码中,我们子类 B 继承了父类 A,并且重写了方法 Day,即我们用类 B 的实例化对象去调用方法 Day 的时候,会打印出 “今天是day3”。
②、在子类中,对父类代码的实例化属性修改:
以上代码中,我们子类 B 继承了父类 A,调用父类的初始化函数后,重新给参数 name 赋值,再给这个 name 给实例化对象 name,具体传参路线如下: