9.2.1 方法重写
如果你的父类方法的功能不能满足你的需求,你可以在子类重写你父类的方法。
例题:
class Parent: # 定义父类
def myMethod(self):
print ('调用父类方法')
class Child(Parent): # 定义子类
def myMethod(self):
print ('调用子类方法')
c = Child() # 子类实例
c.myMethod() # 子类调用重写方法
super(Child,c).myMethod() #用子类对象调用父类已被覆盖的方法
super( )是用于调用父类(超类)的一个方法。
输出结果:
调用子类方法
调用父类方法
9.2.2多态
Python中加法运算符可以作用于两个整数,也可以作用于字符串。
例题一:
1+2 #将整数1与2相加结果为3
‘1’+‘2’ #将字符‘1’与‘2’拼接,结果为‘12’
加法运算符对于不同类型对象执行不同的操作,这就是多态。在程序中,多态是指基类的同一个方法在不同派生类对象中具有不同的表现和行为,当调用该方法时,程序会根据对象选择合适的方法。
例题二:
class Person(object):
def __init__(self,name):
self.name = name
def show(self):
print('姓名:',self.name)
class Student(Person):
def __init__(self,name,score):
super(Student,self).__init__(name)
self.score = score
def show(self):
print('姓名:',self.name,'分数:',self.score)
class Staff(Person):
def __init__(self,name,salary):
super(Staff,self).__init__(name)
self.salary = salary
def show(self):
print('姓名:',self.name,'薪资:',self.salary)
def printInfo(obj):
obj.show()
s1 = Student('小千',100)
s2 = Staff('小王',10000)
printInfo(s1)
printInfo(s2)
运行结果:
姓名: 小千 分数: 100
姓名: 小王 薪资: 10000