python多态

class Bird:
    def move(self,field):
        print('鸟在%s上自由的飞翔' % field)

class Dog:
    def move(self,field):
        print('狗在%s里飞快的奔跑' % field)

# 由于x所指向的对象不同,因此它呈现出不同的行为特征。这就是多态。
x = Bird()
x.move('蓝天') #创建实例,调用方法
x = Dog()
x.move('草地')


#当同一个变量在调用同一个方法时,完全可能呈现出多种行为
# (具体呈现出哪种行为由变量所引用的对象来决定。),这就是多态Polymorshism

# 画布类,定义了draw_pic方法,负责绘制不同的图形
# draw_pic()方法 需要传一个shape参数,draw_dic() 去调用shape的draw方法
# draw_pic()方法 需要传一个shape对象,该对象要有一个draw()方法,每个对象的draw()方法是
# 自己去实现,所以不同的对象调用各自的draw就呈现出了不同的结果,即多态
class Canvas:
    # 画图片,需要传一个图形的参数,需要绘什么图形
    def draw_pic(self,shape):
        print('------开始绘图-----')
        # Python 是动态类型语言,它不会在编译时检查 shape 到底是什么类型,
        # 而是运行时才看这个对象有没有 draw 方法。
        shape.draw(self)

class Rectangle:
    def draw(self,canvas):
        print('在%s上绘制矩形' % canvas)

class Triangle:
    def draw(self,canvas):
        print('在%s上绘制三角形' % canvas)

class Circle:
    def draw(self,canvas):
        print('在%s上绘制圆形' % canvas)

c = Canvas()

c.draw_pic(Rectangle())
c.draw_pic(Triangle())
c.draw_pic(Circle())

  

posted @ 2025-11-21 11:35  lavida2000  阅读(3)  评论(0)    收藏  举报