面向对象 类的多态

1. 多态

1.1 定义

多态指的是一类事物有多种形态,(一个抽象类有多个子类,因而多态的概念依赖于继承)

1.2 示例

多态:同一种事物的多种形态,比如,动物分为 人、狗、猪类

class Animal:
    def run(self):
        raise AttributeError('子类必须实现这个方法')


class Person(Animal):
    def run(self):
        print('person is running')

class Dog(Animal):
    def run(self):
        print('dog is running')

class Pig(Animal):
    def run(self):
        print('pig is running')

tom = Person()
jack = Dog()
peiqi = Pig()

tom.run()   # person is running
jack.run()  # dog is running
peiqi.run() # pig is running

2. 多态性

多态和多态性是两种概念

2.1 定义

  多态性是指具有不同功能的函数可以使用相同的函数名,这样就可以用一个函数名调用不同内容的函数。
  在面向对象方法中一般是这样表述多态性:向不同的对象发送同一条消息,不同的对象在接收时会产生不同的行为(即方法)。也就是说,每个对象可以用自己的方式去响应共同的消息。所谓消息,就是调用函数,不同的行为就是指不同的实现,即执行不同的函数

2.2 示例

多态性:一种调用方式,不同的执行结果

class Animal:
    def run(self):
        raise AttributeError('子类必须实现这个方法')


class Person(Animal):
    def run(self):
        print('person is running')

class Dog(Animal):
    def run(self):
        print('dog is running')

class Pig(Animal):
    def run(self):
        print('pig is running')


tom = Person()
jack = Dog()
peiqi = Pig()

# 多态性依赖于:继承
# 多态性:定义统一的接口
def func(obj):	# obj这个参数没有类型限制,可以传入不同类型的值;参数obj就是“多态性”的具体表现形式
    obj.run()	# 调用的逻辑都一样,执行的结果却不同

func(tom)   # person is running
func(jack)  # dog is running
func(peiqi) # pig is running

综上,多态性就是一个接口(函数),多种实现

2.3 为什么要用多态性(多态性的好处)

从上面多态性的例子可以看出,我们并没有增加上面新的只是,也就是python本身就是支持多态性的,这样做有何好处?

  1. 增加了程序的灵活性
    以不变应万变,不论对象千变万化,使用者都是同一种形式去调用,如func(obj)
  2. 增加了程序的可扩展性
    通过继承animal类创建一个新的类,使用者无需更改自己的代码,还是使用func(obj)去调用

注:
多态:同一种事物的多种形态,动物分为人类,猪类(在定义角度) 多态性:一种调用方式,不同的执行效果(多态性)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值