派生类继承基类时,会“复制”所有基类的所有公有成员和保护成员,但很多时候,并不是所有这些成员派生类都正好需要,为此,派生类通常需要屏蔽掉基类的一些成员。在派生类中屏蔽基类成员就被称作:重载。
一、重载类的成员
重载类的成员的具体方法就是,在派生类中重新定义一个与基类同名的成员,这样,在通过类名或对象名调用这一成员时,只有派生类中新定义的成员会被使用,与派生类中新定义的成员同名的基类中的成员不再起作用。例如:
class base09:
x9 = 91; y9 = 92
def fun(self): print("base09")
class sub08(base09): # 重载基类成员 x9、y9、fun(self)
x9 = 95; y9 = 96
def fun(self): print("sub09")
# 通过类名访问
print(sub08.x9, sub08.y9) # 经过重载,访问到的是派生类中新定义的成员:95 96
sub08.fun(0) # sub09
# 通过对象名访问
obj08 = sub08()
print(obj08.x9, obj08.y9) # 经过重载,访问到的是派生类中新定义的成员:95 96
obj08.fun() # sub09
二、重载构造函数
派生类也可以通过定义新的构造函数来重载基类的构造函数。被重载的基类的构造函数,在创建对象后不再会被系统自动调用。例如:
class base10:
def __init__(self): print('base10'); self.a = 1
class sub09(base10):
v = 100
def __init__(self): print('sub09', self.v); self.b = 2 # 重载构造函数
obj09 = sub09() # 派生类中新定义的构造函数被调用:sub09 100
print(obj09.a) # 被重载的基类构造函数中定义的成员不存在:AttributeError: 'sub09' object has no attribute 'a'
attribute 'a'
print(obj09.b) # 2
———————————————— 本篇完 ————————————————
看完之后,麻烦您顺手点击下方 “点赞” 两个字给我点个赞吧 ^-^ , 谢谢您了。
如果您还能像我小学一年级班主任好老师那样,给我随心写上几句表扬或批评的话语,那真是感激不尽!
在我人生的道路上,有了您的鼓励和指导,我一定成长快快。