python实现多态
多态的定义:
多态按字面的意思就是“多种状态”。在面向对象语言中,接口的多种不同的实现方式即为多态。
官方说:
- 接口的多种不同的实现方式即为多态。
- 多态性是允许你将父对象设置成为一个或更多的他的子对象相等的技术。
- 我们在程序中定义的引用变量所指向的具体类型和通过该引用变量的方法调用在编程的时候并不确定,当处于运行期间才确定。就是这个引用变量究竟指向哪一个实例对象,在编译期间是不确定的,只有运行期才能确定,这样不用修改源码就可以把变量绑定到不同的类实例上,让程序拥有了多个运行状态,这就是多态。
打个比方吧:
允许将子类类型的指针赋值给父类类型的指针,把不同的子类对象都当作父类来看。比如你家有亲属结婚了,让你们家派个人来参加婚礼,邀请函写的是让你爸来,但是实际上你去了,或者你妹妹去了,这都是可以的,因为你们代表的是你爸,但是在你们去之前他们也不知道谁会去,只知道是你们家的人。可能是你爸爸,可能是你们家的其他人代表你爸参加。这就是多态。
多态的分类:
多态又分为 编译时多态和运行时多态。
编译时多态:比如重载
运行时多态:比如重写
代码展示简单多态实现:
class Human(object):
def __init__(self, name):
self.name = name
def talk(self): # 自己定义talk方法
print('这是人')
def call_talk(self): # 多态
self.talk()
class Woman(Human):
def talk(self): # 重写talk
print('%s很美丽' % self.name)
class Man(Human):
def talk(self):
print('%s很帅气' % self.name)
class People(Human): # 继承
pass
human = Human('')
human.call_talk()
man = Man('女人')
man.call_talk()
woman = Woman('男人')
woman.call_talk()
people = People('')
people.call_talk()
这是展示效果
这是人
女人很帅气
男人很美丽
这是人
参考https://www.jianshu.com/p/68ddb5484ca2
希望对大家有帮助,如果有错不吝赐教。