文章目录
前言
上一篇文章主要是针对一个类的介绍,这一章我们来了解针对多个类的介绍
super() 方法
定义
用来调用父类的方法
特点
以下为个人观点
- super() 方法只能往上寻找(往前面寻找父类)
- super() 只能调用方法,不能调用属性
调用方法 : super().方法名()
封装
封装是面向对象的三大特征之一。简单来说,封装就是把代码定义在类的内部。这方面我的知识比较薄弱,不再一一介绍。
继承
重写父类
如果我继承了父类,那么是不是只可以使用父类的方法呢?
不是的,我们不仅可以继承父类的方法,还能自己定义自己的方法。也可以覆盖父类的方法。
若是自定义方法的话,只要不与父类的方法重名即可。
若自定义方法与父类方法重名了,则为重写父类方法。
- 重写父类方法
- 只调用自己的方法
实例化对象后,使用对象调用自己的方法
- 既调用自己的,还调用父类的
- super() 调用
- 父类名.方法名(self) 调用
class Father(object):
def show(self):
print('父类的show方法')
class Son(Father):
def show(self): # 子类的方法名与父类的方法名重名
print('子类的show方法')
Father.show(self) # 父类名.方法名(self) 调用
super().show() # super() 调用
s = Son()
s.show()
# 输出结果:
子类的show方法
父类的show方法
父类的show方法
单继承
继承:继承一个父类,继承之后。子类可以调用父类的方法和属性
继承方法 : 直接在子类名的括号中填写父类的类名。父类不需要带括号
class Father(object):
pass
class Son(Father):
pass
class Father(object):
def show(self):
print('父类的show方法')
class Son(Father):
pass
s = Son() # 实例化子类
s.show() # 子类调用父类的show() 方法
# 输出结果:
父类的show方法
object 是所有类的父类。当不继承任何类时。默认继承基类
多继承
多继承:同时继承多个父类。调用方法同时,但是要在括号内传入多个参数
不论是单继承还是多继承。父类的私有属性和方法都不会被子类继承
如果继承了多个父类,那么调用方法会不会有冲突呢?
情况一:
当Son子类继承了两个父类时,而其中一个父类还存在一个父类。那么这种情况,则遵循以下的规则
class Son(Father, Father1)
- 左边优先原则 (优先调用左边的父类的方法,这里的左边是指左边的参数)
- 一路走到底 (若 Father 类中没有所需要的方法,则继续往上寻找。在 GrandFather 类中寻找所需要的方法。如果都没有,最后去 Father1 类中寻找)
如上图,若 Son 类 调用父类方法。则优先寻找 Father 父类中的方法。再寻找 GrandFather 类中的方法。最后寻找 Father1 中的方法
情况二:
当出现继承的两个父类,而这两个父类又同时继承同一个父类。则遵循以下的规则
- 同一个父类时,需要找到同一级的最后一个类(执行找到的最后一个类)。再往上一层寻找
class Son(Father, Father1)
如上图,若两个父类同时存在同一种方法。则执行 Father1 中的方法
多态
多态 : 定义时的类型与运行时的类型不一致(不严谨)
# 定义第一个类
class No_One(object):
def show(self):
print('No_One的show方法')
# 定义第二个类
class No_Two(object):
def show(self):
print('No_Two的show方法')
def test(obj):
obj.show()
one = No_One() # 实例化No_One类
test(one) # 将实例化对象 one 传入test() 方法中,对象再在方法中调用函数
two = No_Two() # 实例化No_Two类
test(two) # 将实例化对象 two 传入test() 方法中,对象再在方法中调用函数
# 输出结果:
No_One的show方法
No_Two的show方法
总结
注意: 以上思维导图为个人编写,如有错误。还希望各位大佬批评指正。整篇文章全为个人观点,表述不当之处,还请多多谅解。欢迎各位大佬评论交流!
面向对象中的两个概念很重要,一个是类(抽象),另一个就是对象(具像)。类代表的范围更广,类里面可以包含多个函数(也称作方法)。而对象就是用来调用类里面的方法和属性的。
欢迎各位大佬评论交流。同时也欢迎各位大佬批评指正。让我们一起共同进步!