当前位置 博文首页 > m0_51723227的博客:03继承

    m0_51723227的博客:03继承

    作者:[db:作者] 时间:2021-08-09 10:06

    继承

    目标
    • 单继承
    • 多继承
    面向对象三大特性
    1. 封装 根据职责属性方法 封装到一个抽象的类中
    2. 继承 实现代码的用,相同的代码不需要重复的缩写
    3. 多态 不同的对象调用相同的方法,产生不同的执行结果,增加代码的灵活度

    01单继承

    1.1继承的概念,语法和特点

    • 概念:子类拥有父类的所有方法属性

    在这里插入图片描述

    • 继承的语法:

      • class(父类)pass
        

    eg:

    class Animal:
        def __init__(self,name):
            self.name = name 
        def eat(self):
            print("吃")
        def drink(self):
            print("喝")
        def run(self):
            print("跑")
        def sleep(self):
            print("睡")
    wangcai = Animal("旺财")
    wangcai.eat()
    wangcai.drink()
    wangcai.run()
    wangcai.sleep()
    

    运行结果:

    吃
    喝
    跑
    睡
    

    如果需要再定义狗类,便是在Animal的基础上加上增加bark

    class Dog:
        def __init__(self,name):
            self.name = name 
        def eat(self):
            print("吃")
        def drink(self):
            print("喝")
        def run(self):
            print("跑")
        def sleep(self):
            print("睡")
        def bark(self):
            print("叫")
    wangcai = Dog("旺财")
    wangcai.eat()
    wangcai.drink()
    wangcai.run()
    wangcai.sleep()
    wangcai.bark()
    

    运行结果:

    吃
    喝
    跑
    睡
    叫
    

    那么如果再定义 神狗类需要加上 fly

    class God_Dog:
        def __init__(self,name):
            self.name = name 
        def eat(self):
            print("吃")
        def drink(self):
            print("喝")
        def run(self):
            print("跑")
        def sleep(self):
            print("睡")
        def bark(self):
            print("叫")
        def fly(self):
            print("飞")
    wangcai = God_Dog("哮天犬")
    wangcai.eat()
    wangcai.drink()
    wangcai.run()
    wangcai.sleep()
    wangcai.bark()
    wangcai.fly()
    

    运行结果:

    吃
    喝
    跑
    睡
    叫
    飞
    

    综上所述,因此就比较麻烦,特别是比如如果第一类Animal中drink需要修改,那么以后的所有类都需修改

    因此可以使用继承:

    class Animal:
        def __init__(self,name):
            self.name = name 
        def eat(self):
            print("吃")
        def drink(self):
            print("喝")
        def run(self):
            print("跑")
        def sleep(self):
            print("睡")
    class Dog(Animal):
        def bark(self):
            print("叫")
    class God_Dog(Dog):
        def fly(self):
            print("飞")
    wangcai = God_Dog("哮天犬")
    wangcai.eat()
    wangcai.drink()
    wangcai.run()
    wangcai.sleep()
    wangcai.bark()
    wangcai.fly()
    

    运行结果:

    吃
    喝
    跑
    睡
    叫
    飞
    

    如果修改呢:

    class Animal:
        def __init__(self,name):
            self.name = name 
        def eat(self):
            print("吃")
        def drink(self):
            print("喝---")
        def run(self):
            print("跑")
        def sleep(self):
            print("睡----")
    class Dog(Animal):
        def bark(self):
            print("叫")
    class God_Dog(Dog):
        def fly(self):
            print("飞")
    wangcai = God_Dog("哮天犬")
    wangcai.eat()
    wangcai.drink()
    wangcai.run()
    wangcai.sleep()
    wangcai.bark()
    wangcai.fly()
    

    运行结果:

    吃
    喝---
    跑
    睡---
    叫
    飞
    

    在这里插入图片描述
    新人创作,若有问题,欢迎大佬们的斧正

    cs
    下一篇:没有了