前言

文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

作者:清风python

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取http://t.cn/A6Zvjdun

名词解析

Java中重写与重载的含义:

重写(Override), 是子类对父类的允许访问的方法的实现过程进行重新编写,返回值和形参都不能改变。即外壳不变,核心重写!
重载(overloading), 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。
参考:https://www.runoob.com/java/java-override-overload.html

可是在Python中,这两种实现却被模糊化了。大家通常更多听到的是只有重载的概念,而Python的重载却更像是Java的重写,具体内容如下:

重载是对继承的父类方法进行重新定义。
重载可以重新定义方法还可以重新定义运算符。
因为通过继承的类不一定能满足当前类的需求。
在当前类中只需要修改部分内容而达到自己的需求。

再仔细一点说,python将重载又分为了类的重载,运算符重载(一些内置魔术方法的二次定义)。

类的重载与运算符重载

类的重载和运算符重载网上铺天盖地的内容,谁也说不出个花来,但既然提到了,就简单举个例子吧…

类的重载是子类继承父类,并重写了父类的方法,比如:

子类WangPangZi不仅继承了父类的say方法,另外重写了call方法,用于专门打印出自己低调而不失内敛的名字,这就是最近简单的类的重载。

运算符重载和上面的类似,只不过它是将原本一些运算符的功能进行了重新定义,举例说明:

python的重载(即Java的重写)说完了,但python如何实现java的重载功能呢?

Java的重载实现

首先要明确java重载涉及哪些:

1.参数个数不同,这个在Python真比较容易实现,我们可以通过Python默认参数与可变长参数来实现,举个例子:

2.参数相同,但入参的类型不同,此时该如何操作呢?简单一思考,貌似Python没办法实现,但是如果基础够扎实的同学,应该听过functools中有一个singledispatch 装饰器。让我们来看看它的具体实现吧!

如此操作,就达到了类似Java中的重载功能…当然这个装饰器也是有弊端的,它只能根据第一个参数的类型去决定调用哪个函数。

语言之间的对比

不同的语言比较着去学习,是否觉得更加有趣了?下次面试,如果考官问你这些,岂不是稳稳通过!今天的内容就到这里,希望大家喜欢。

如果你处于想学Python或者正在学习Python,Python的教程不少了吧,但是是最新的吗?

说不定你学了可能是两年前人家就学过的内容,在这小编分享一波2020最新的Python教程。

以上这些教程小编已经为大家打包准备好了,希望对正在学习的你有所帮助!

获取方式,私信小编 “ 资料 ”,即可免费获取哦!

最新文章

  1. 深入研究java.lang.Runtime类
  2. xcode6 AsynchronousTesting 异步任务测试
  3. Assembly(c#中简单说明[转]
  4. C++中的类所占内存空间总结
  5. JFrome 登陆/注册/回显/输出流小程序之二
  6. ## GridView 布局:item设置的高度和宽度不起作用、自动适配列数、添加Header和Footer ##
  7. 使用百度富文本编辑器UEditor碰到的问题
  8. Unexpected exception 'Cannot run program ... error=2, No such file or directory' ... adb'
  9. 使用r.js优化静态资源
  10. 不用EF框架,完成完美实体映射,且便于维护!(AutoMapper,petapoco)
  11. JSP include HTML出现乱码 问题解决
  12. CTF---Web入门第六题 因缺思汀的绕过
  13. AI 前馈神经网络
  14. Swagger 常用注解
  15. SQL Server 2008 R2下载地址
  16. GrindEQ Math Utilities 2015破解版 图文安装和序列号补丁激活教程
  17. DICOM 协议学习笔记之 How Does DICOM Work ?
  18. DNS开源服务器BIND最小配置详解
  19. Grunt入门学习之(1) -- 环境安装
  20. React学习笔记2017-12-31

热门文章

  1. babel-loader配置
  2. 【面试QA-基本模型】LSTM
  3. django-jwt token校验源码简析
  4. MySQL----多表操作
  5. 【2019牛客暑期多校第一场】E题ABBA
  6. Linux Ubuntu 开发环境配置 ——最具生产力工具一览
  7. Python第二章-变量和数据类型
  8. Python python 函数参数:必选参数,默认参数
  9. ajax的封装——jq简化版
  10. TCP连接与HTTP请求