继承概念:继承是类与类的一种关系,是一种子类与父类的关系,即爸爸与儿子,儿子继承爸爸的属性和方法。
继承分为:单继承和多继承
下面我们先说说单继承!!!
看这段代码:父类Animal,子类Cat
class Animal():
type_name="动物类"
def eat(self):
print("动物能吃")
def sleep(self):
print("动物能睡")
class Cat(Animal):
def shout(self):
print("喵喵")
mimi=Cat()
mimi.eat()
print(mimi.type_name)
mimi.shout()
通过这段代码,我们可以得出结论:
子类可以直接使用父类的公有属性和方法,但是对于父类私有的属性则不可以调用
继承的传递性:
继承的传递性就是指子类除了可以调用父类的公有属性和方法外,还可以调用父类的父类中封装的公有属性和方法。
案例:
定义一个动物类Animal为父类,它有1个属性type_name,两个方法eat和sleep
定义一个Cat 猫类继承于Animal,猫类有两个方法shout和sleep
定义一个HelloKitty类继承于Cat,HelloKitty类有speak和sleep方法
class Animal():
type_name="动物类"
def eat(self):
print("动物能吃")
def sleep(self):
print("动物能睡")
class Cat(Animal):
def shout(self):
print("喵喵")
def sleep(self):
print("猫很少睡")
class HelloKitty(Cat):
def speak(self):
print("我是HelloKitty")
def sleep(self):
print("HelloKitty不睡觉")
#重写:一旦子类有与父类同名方法或者属性,那么就叫子类对父类方法的重写
#即子类会覆盖掉父类方法--仅仅针对子类生效
hk=HelloKitty()
hk.shout()
hk.speak()
hk.sleep()
看一下运行结果:
什么是多继承?
多继承可以让子类对象,子类可以同时调用多个父类的公有属性和方法
案例:
• 定义一个神仙类和猴子类,再定义一个孙悟空类,孙悟空类分别继承神仙类和猴子类
• 神仙类有飞的实例方法
• 猴子类有吃的实例方法
• 孙悟空类有取经的实例方法
• 实例孙悟空对象,分别调用父类的属性和方法
class Monkey():
def eat(self):
print("猴子爱吃香蕉")
class God():
def fly(self):
print("神仙会飞")
def eat(self):
print("神仙吃蟠桃")
class Sunwukong(God,Monkey):
def qujing(self):
print("上西天")
swk=Sunwukong()
swk.qujing()
swk.eat()
swk.fly()
看下执行结果:
结论:当子类继承多个父类时,哪个父类写在括号的前面,则调用哪个父类的属性和方法,在该例子中,父类God写在前面,所以执行结果为调用该父类的方法