1.覆盖式重写
父类中的方法不满足使用时,进行覆盖式重写,在子类中重新实现所需要的方法
2.扩展式重写
父类中的功能还需要,只是添加了新功能
方法:
1.在子类中重新定义和父类同名的方法
2.在子类代码中,使用super().方法名()调用父类中的功能
3.书写新的功能
示例:
1.覆盖式重写
直接在Computer_c类中覆盖式重写play方法
class Computer():
def __init__(self,brand,price):
self.brand=brand
self.price=price
def play(self,movie):
print(f"{self.brand}价格为{self.price},正在播放{movie.name}")
class Computer_c(Computer):
def play(self,movie):
# super().play(movie)
# print(f"{self.brand}价格为{self.price},正在播放{movie.name}")
print(f"{self.brand}价格为{self.price}")
class Movie():
def __init__(self,name):
self.name=name
if __name__ == '__main__':
movie=Movie("sasa")
c=Computer_c("小米",54)
c.play(movie)
输出结果为:
2.扩展式重写
在Computer_c类中扩展式重写play方法
class Computer():
def __init__(self,brand,price):
self.brand=brand
self.price=price
def play(self,movie):
print(f"{self.brand}价格为{self.price},正在播放{movie.name}")
class Computer_c(Computer):
def play(self,movie):
super().play(movie)
print(f"{self.brand}价格为{self.price},正在播放{movie.name}")
print(f"{self.brand}价格为{self.price}")
class Movie():
def __init__(self,name):
self.name=name
if __name__ == '__main__':
movie=Movie("sasa")
c=Computer_c("小米",54)
c.play(movie)
输出结果:
可以看到,首先执行了父类Computer中的play方法,再执行子类中的play方法