java与python多态的区别_面向对象特性之三:多态(Python进阶教程)

今天我们要讲一讲面向对象的第三个特性:多态;

u=2094075795,2049440136&fm=173&app=25&f=JPEG?w=300&h=300&s=6390E42B9A9F71CA442C005B030010E2

什么叫做多态?从字面意思上理解,就是一个函数具有多种形态。本质上其实就是同一操作方法作用于不同的对象时,有着不同的解释,执行不同的逻辑,产生不同的结果。今天我们还是用例子来说明在Python中多态的使用方法、注意事项和使用的优点。

多态

你还是这家快要上市的快递公司的老板,你手底下的部门有很多个了,其中有两个重要的部门,一个叫做“海运部门”,可以定义成一个“海运部门类”,专门负责海上的物流快递运输,一个叫做“空运部门”,可以定义成一个“空运部门类”,专门负责航空的物流快递运输。这两个类是“部门类”的子类,下面我们用代码来表示一下这三个类:

u=1748821697,4195286121&fm=173&app=25&f=JPEG?w=563&h=390&s=0053CD30119EC5CC5E79B4DE000090B1

在上例中,我们定义了三个类,主类叫做“部门类”,两个子类继承于该类,分别代表“海运部门”和“空运部门”,这两个类除了都有自己的构造函数之外,还有着一个具有相同名称的方法,我们暂且叫做“送货”方法。这两个类实例化对象后,都调用各自的“送货”方法后,我们看到,输出的结果是不一样的,也就是说,它们分别执行了各自类中的方法。

像上例中,不同的对象(海运部门和空运部门)虽然执行的方法(送货)是同一个,但是执行的结果是不一样的,在面向对象的程序设计中,通过相同的函数方法名去执行不同的动作,可以得到不同的结果,这样的程序设计方法就叫做多态;

多态的思想其实是一类事物具有多种形态,就像上例,“部门类”具有多种形态,分别是“海运部门”和“空运部门”。多态是与继承结合在一起的,因此多态的概念依赖于继承。

注意:

学习过Python的朋友都知道,Python中的变量是弱类型的,也就是说,在定义时是不用指明该变量的类型,在运行时才确定其状态。这点和Java、C++的区别很大,所以,有些人也称Python是一种多态语言。最明显的例子就是我们经常在用的一个函数:“len(object)”,这个python的内置函数不仅可以计算字符的长度,而且可以计算列表、元组等其他类型的数据个数,这正是多态的一种体现。

多态性

初学的时候经常容易把多态和多态性这两个概念搞混淆,有时候面试的时候也会问到这个问题。如果说多态是一类事物具有多种形态的话,那多态性就是不同类型的实例具有相同的调用方法,我们用下面的例子来说明:

u=3099688734,2275234528&fm=173&app=25&f=JPEG?w=533&h=406&s=4053CD30199EC1CE1E7DF4DA0000D0B1

定义一个统一的接口:“func(c,peoplenum)”,调用时参数直接填入实例化的对象,可以直接调用该类的方法(一个接口,多种实现)。

使用多态的好处

增加程序的灵活性

调用者不管类里面的方法是通过什么逻辑实现,都只管使用一种方法去调用;

增加程序的可扩展性

即便在“部门类”里再扩展其他的子类,调用者也不需要更改代码,还是使用“func(c,peoplenum)”来调用;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值