类的继承特点:
- 子类里面的函数名与父类函数名重复的时候,就叫重写
- 继承的类,是否要用到初始化函数,请看是否从父类里面继承了
- 父类有的,继承后,我都可以直接拿过来用
- 父类有,子类也有重名的函数,那么子类的实例就优先调用子类的函数
1 class RobotOne:#第一代机器人 2 def __init__(self,name,year=None): 3 self.year=year 4 self.name=name 5 6 def walking_on_ground(self):# 7 print(self.name+"只能在平地上行走,有障碍物就会摔倒") 8 9 def robot_info(self): 10 print("{0}年产生的机器人{1},是中国研发的".format(self.year,self.name)) 11 #继承 12 class RobotTwo(RobotOne):#第二代机器人继承于第一代机器人的类 13 14 def walking_on_ground(self):#子类里面的函数名与父类函数名重复的时候,就叫重写 15 print(self.name+"可以在平地上平稳的行走") 16 17 def walking_avoid_block(self):#拓展 18 #我想在子类的函数里面调用父类的一个函数 19 self.robot_info() 20 print(self.name+"可以避开障碍物")
多继承:多继承的子类具有两个父类的属性和方法 ,如果两个父类具有同名方法的时候,子类调用函数就近原则 ,初始化函数也包括在内
1 #为了多继承写的一个第二代机器人 2 class RobotTwo():#第二代机器人 3 def __init__(self,name): 4 self.name=name 5 6 def walking_on_ground(self):#子类里面的函数名与父类函数名重复的时候,就叫重写 7 print(self.name+"可以在平地上平稳的行走") 8 9 def walking_avoid_block(self):#拓展 10 #我想在子类的函数里面调用父类的一个函数 11 print(self.name+"可以避开障碍物") 12 13 #第三代机器人 14 class RobotThree(RobotTwo,RobotOne):#第三代机器人继承于第一代和第二代机器人的类 15 def __init__(self,year,name): 16 self.year=year 17 self.name=name 18 19 def jump(self): 20 print(self.name+"可以单膝跳跃")
超继承:super(子类名,实例化).(父类中的方法),保留父类的这个方法同时加上自己的方法
1 class MathMethod: 2 def __init__(self, a, b): 3 self.a = a 4 self.b = b 5 6 def add(self): 7 return print("我是父类的加法:", self.a + self.b) 8 9 def sub(self): 10 return self.a - self.b 11 12 13 class MathMethod_1(MathMethod): 14 def divide(self): # 拓展 15 return self.a / self.b 16 17 def add(self): # 重写 18 # super(子类名,实例化).(父类中的方法) 19 super(MathMethod_1, self).add() 20 print("我是子类的加法", self.b + self.b + 10) 21 22 23 if __name__ == '__main__': 24 MathMethod_1(10, 5).add() 25 26 ------>我是父类的加法: 15 27 ------>我是子类的加法 20