• python学习笔记(29)面向对象-继承和抽象类


    继承概念:

      当一个类定义了一些公共的方法时,其他的子类只要继承了这个类,就可以调用这个类中的一些方法,可用于简约代码量

      继承类的写法:

        class  BaseClass:

          xxxxx

        class ZiClass(BaseClass):

          xxxxx

      一个类可以继承多个父类

    继承中两个重要方法:1.覆盖式重写父类方法 2.对父类方法做修改---------需要通过super().方法名()来调用父类方法

    class Lz:
        country = 'Beijing'
        house = 8
        money = 99999
        def driver(self):
            print('开车')
        def cook(self):
            print('做饭')
        def make_money(self):
            print('挣钱')
    class Lw:
        def majiang(self):
            print('majiang')
        def maicai(self):
            print('maicai')
    
    class Car:
        __key = '车轱辘下头' #私有的变量和私有的方法不能继承
        def run(self):
            print(self.__key)
            print('run')
    
    
    '''覆盖式,直接重写了父类方法'''
    class CcxCar(Car): #--覆盖式,直接重写了父类方法
        def run(self):
            print('拐弯跑。。')
    
    '''在父类方法的基础上做修改'''
    class TylCar(Car):#--在父类方法的基础上做修改
        def run(self):
            super().run()#使用super()会自动找到父类
            #Car.run(self)#当有多个父类时,这种方法不适用
            print('充电')
    
    class Cmc(CcxCar):
        def fly(self):
            print('fly')
    
    
    class Xz(Lz,Lw):
        pass
    
    xz = Xz()
    xz.cook()
    xz.make_money()
    xz.driver()
    xz.majiang()
    
    tyl = TylCar()
    tyl.run()
    

      

    抽象类:是一个规范,大家都必须遵守的一个规范,否则就会报错

        无法单独实例化,只能被继承,通过子类重写父类方法才能实现功能。如果父类中有子类没实现的方法,则不合规范,会报错

        抽象类定义的方法内容不会实现功能,意义在于子类必须要实现这个抽象类的方法才行,否则就是不符合规范

    下面是一个关于水果抽象类的例子

    import abc   #利用abc模块实现一个抽象类
    '''抽象类:是一个规范,大家都必须按照这个规范执行才行,无法单独实例化,只能被继承,定义的方法必须要子类来实现'''
    class Fruit(metaclass=abc.ABCMeta):
    
        @abc.abstractmethod
        def get_name(self):
            print('水果的名字')
    
        @abc.abstractmethod
        def taste(self):
            print('好吃么?')
    
    class Banana(Fruit):
    
         def get_name(self):
             print("这是香蕉")
    
         def taste(self):
             print("很好吃")
    
    banana = Banana()
    banana.get_name()
    banana.taste()
    

      

  • 相关阅读:
    MongoDB环境配置
    Python之路【第二十七篇】:反射
    Socket网络通讯,TCP三次握手和四次释放,与UDP的差别
    iOS 常用第三方
    UISegmentedControl的使用
    OC取应用程序目录的路径
    KVC中setValuesForKeysWithDictionary
    KVC和KVO的简单对比
    C语言 内存和地址
    html基础知识
  • 原文地址:https://www.cnblogs.com/bugoobird/p/13124872.html
Copyright © 2020-2023  润新知