1、多态特性:
(1)多态是以继承和重写方法为前提,对所有子类实例化产生的对象调用相同的方法,执行产生不同的执行结果。
(2)一个函数有多个状态
(3)一个对象的属性和行为不是由他所继承的父类决定的,而是有其本身包含的属性和方法决定
2、多态的优点:
(1)增加程序的灵活性
(2)增加程序的可拓展性
3、
多态案例:可以传入多种状态的数据
案例:
class animal:
def eat(self,x,y):
print(x+y)
if name == ‘main’:
dog=animal()
dog.eat(1,2) #数值类型 3
dog.eat(“1”,“2”) #两个字符 12
dog.eat(“肉”,“骨头”) #中文 , #肉骨头
场景一:
class Animal(object):
def talk(self):
print(“动物”)
class cat(Animal):
def talk(self):
print(" 喵喵")
class dog(Animal):
def talk(self):
print(“旺旺”)
if name == ‘main’:
a=Animal()
a.talk()
b=cat()
b.talk()
c=dog()
c.talk()
#统一一个接口,访问
def func(object):
object.talk()
func(a)
func(b)
func©
场景二:
class dog ():
def init(self,name):
self.name=name
def game(self):
print(“杭州{}”.format(self.name))
class A(dog):
#父类的方法不能满足子类的需求时,重写game方法
def game(self):
print(“上海{}”.format(self.name))
class p():
def init(self,name):
self.name=name
def game_with_dog(self,dog):
print("{},养{}".format(self.name,dog.name))
if name == ‘main’:
a=A(" 宠物")
a.game()
b=dog(“怪物”)
b.game()
c=p(“谁”)
c.game_with_dog(a)
c.game_with_dog(b)
====================
场景三:
class sky(object):
def work(self):
print(“杭州多测师”)
class sky1(sky): #定义一个类重写父类方法
def work(self):
#重写父类方法
print(“上海多测师”)
class sky2(sky):
# 重写一个父类方法
def work(self):
print(" 深圳多测师")
class p(object):
def work_with_sky(self,sky): #传入不同的对象,执行不同的二代码,不同的wokr函数只能接受父类对象,
sky.work()
a=sky()
a.work()
b=sky1()
b.work()
c=sky2()
c.work()
d=p()
d.work_with_sky(a)
d.work_with_sky(b)
d.work_with_sky©
==================