zoukankan      html  css  js  c++  java
  • 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()
    

      

  • 相关阅读:
    解决UITableView中Cell重用机制导致内容出错的方法总结
    Hdu 1052 Tian Ji -- The Horse Racing
    Hdu 1009 FatMouse' Trade
    hdu 2037 今年暑假不AC
    hdu 1559 最大子矩阵
    hdu 1004 Let the Balloon Rise
    Hdu 1214 圆桌会议
    Hdu 1081 To The Max
    Hdu 2845 Beans
    Hdu 2955 Robberies 0/1背包
  • 原文地址:https://www.cnblogs.com/bugoobird/p/13124872.html
Copyright © 2011-2022 走看看