zoukankan      html  css  js  c++  java
  • Python面向对象13.多继承

    一、引入

    应该听说过狮虎兽吧,它是狮子与老虎2种动物杂交出现的新物种

    再比如骡子是由驴与马2种动物杂交出现的新物种

    之所以用上述的2种杂交动物来开场,是因为要讲解的多继承其实就有点杂交的意思

    什么是多继承?

    如果一个类继承了多个父类,那么这就是多继承

    二、定义格式

    单继承时在类()中写1个父类的名字,那么多继承就需要在()中写多个父类的名字而且用英文逗号,进行分割

    class A:
        pass
    
    
    class B:
        pass
    
    
    class C(A, B):  # 继承了A、B类
        pass
    

      

     

    三、应用

    我们都知道今天的手机功能已经非常全面了,而且还在突风猛进的进化中,不仅有电话功能还有照相功能(参照照相机)、播放音乐(参照MP3)等,下面我们通过一步步的展示方式来揭晓多继承的真实作用价值所在

    首先我们定义一个普通的手机Telephone(即很久之前的功能机)

    class Telephone:
        def call(self):
            """打电话"""
            print("正在打电话...")
    
        def answer(self):
            """接电话"""
            print("正在接电话...")
    

      

     

    如果我们想要让手机拥有照相机的功能,此时就需要定义一个照相机类Camera

    class Camera:
        def take_photo(self):
            """拍照功能"""
            print("正在拍照...")
    

      

     

    然后让Telephone继承Camera

    class Camera:
        def take_photo(self):
            """拍照功能"""
            print("正在拍照...")
    
    
    class Telephone(Camera):
        def call(self):
            """打电话"""
            print("正在打电话...")
    
        def answer(self):
            """接电话"""
            print("正在接电话...")
    

      

     

    然后创建一个手机对象,此时就手机就继承了拍照功能

    class Camera:
        def take_photo(self):
            """拍照功能"""
            print("正在拍照...")
    
    
    class Telephone(Camera):
        def call(self):
            """打电话"""
            print("正在打电话...")
    
        def answer(self):
            """接电话"""
            print("正在接电话...")
    
    
    iiphone = Telephone()
    iiphone.call()
    iiphone.answer()
    iiphone.take_photo()
    

      

     

    运行之后的效果如下:

    正在打电话...
    正在接电话...
    正在拍照...
    

      

     

    如果想要让手机拥有听音乐的功能,我们可以定义一个MP3

    class MP3:
        def play_music(self):
            """播放音乐功能"""
            print("正在播放音乐...")
    

      

     

    最后让手机Telephone类继承MP3类

    class Camera:
        def take_photo(self):
            """拍照功能"""
            print("正在拍照...")
    
    
    class MP3:
        def play_music(self):
            """播放音乐功能"""
            print("正在播放音乐...")
    
    
    class Telephone(Camera, MP3):
        def call(self):
            """打电话"""
            print("正在打电话...")
    
        def answer(self):
            """接电话"""
            print("正在接电话...")
    
    
    iiphone = Telephone()
    iiphone.call()
    iiphone.answer()
    iiphone.take_photo()
    iiphone.play_music()
    

      

     

    带有音乐功能的手机就做好了,试试看

    正在打电话...
    正在接电话...
    正在拍照...
    正在播放音乐...
    

      

     
  • 相关阅读:
    记一次大数据量后台服务的性能优化(转载)
    javascript void(0)
    IE11浏览器设置为兼容不同IE版本
    Asp.net WebForm(4) Server对象、跳转分析、验证控件和站点导航
    http请求错误码(转载)
    windows系统和IE的兼容性问题
    Lombok常用注解
    Typora配置图床PicGo,使用阿里云Oss 存储
    Picgo +sm.ms打造免费图床个人工具
    OSS —— 对象存储介绍
  • 原文地址:https://www.cnblogs.com/dong4716138/p/15747810.html
Copyright © 2011-2022 走看看