继承概念:
当一个类定义了一些公共的方法时,其他的子类只要继承了这个类,就可以调用这个类中的一些方法,可用于简约代码量
继承类的写法:
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()