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()

  

原文地址:https://www.cnblogs.com/bugoobird/p/13124872.html