上QQ阅读APP看书,第一时间看更新
3.4.3 整合使用多态和继承
在实际项目里,多态往往和继承一起使用,比如在同一父类的不同子类里会有名字相同但实现细节不同的方法,区分它们的是调用这些方法的实例。在如下的PolyInheritanceDemo.py案例中,我们来看一下两者整合使用的效果。
01 # coding=utf-8 02 class Emp: 03 def work(self): 04 print("Work as Emp Mode") 05 class PythonDev(Emp): 06 def work(self): # 重写父类方法,定义Python开发的工作方式 07 print("Develop Python") 08 class HR(Emp): 09 def work(self):# 重写父类方法,定义HR的工作方式 10 print("Do HR job") 11 pythonDev = PythonDev() 12 hr = HR() 13 pythonDev.work() # Develop Python 14 hr.work() # Do HR job
在第5行定义的PythonDev和在第8行定义的HR类都是第2行定义的Emp类的子类,在其中均覆盖了Emp类的work方法,实现了针对本类的work方法。
在第11行和第12行我们分别创建了PythonDev和HR的实例,并在第13行和第14行分别调用了它们的work方法。从输出的结果来看,两个子类在调用work方法时会根据调用主体正确地执行本类定义的work方法,而没有调用父类的,通过继承的方式体现了抽象动作相同而具体实现细节不同的多态特性。