前言

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

作者:清风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中的重载功能…当然这个装饰器也是有弊端的,它只能根据第一个参数的类型去决定调用哪个函数。

语言之间的对比

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

java方法重载_在Python中该如何实现Java的重写与重载相关推荐

  1. java与python多态的区别_如果未调用父构造函数(与Java不同),多态性在Python中如何工作? - java...

    因此,父类构造函数是在Java中调用的,而在Python中则不是.如果这意味着未创建父对象,那么如何在Python中成功调用def function-这是怎么回事? Python代码 class Pa ...

  2. python中使用grpc方法示例_在Python中使用gRPC的方法示例

    本文介绍了在Python中使用gRPC的方法示例,分享给大家,具体如下: 使用Protocol Buffers的跨平台RPC系统. 安装 使用 pip pip install grpcio pip i ...

  3. python list方法说明_对python中list的五种查找方法说明

    Python中是有查找功能的,五种方式:in.not in.count.index,find 前两种方法是保留字,后两种方式是列表的方法. 下面以a_list = ['a','b','c','hell ...

  4. java gradle构建_在Gradle中为JPMS构建Java 6-8库

    java gradle构建 通过提供Java 9 module-info.class了解如何使用Gradle构建支持JPMS( Java平台模块系统 )的Java 6-8库. 介绍 如果您需要JPMS ...

  5. 使java方法全部折叠_Intellij IDEA中一次性折叠所有Java代码的快捷键设置

    Intellij IDEA中一次性折叠所有Java代码的快捷键设置 问题:在Java文件中,想把所有的Java方法代码都一次性给折叠起来,用哪个点开哪个. 问题来源:在新建model bean的时候, ...

  6. python 函数重载_在Python中实现函数重载,60%的人都不会

    connect('123.45.32.18:8080') connect(('123.45.32.18', 8080)) 复制代码 你想在代码里面兼容这两种写法,于是你可能会这样写代码: def co ...

  7. python中config方法作用_使用Python中的config配置

    Python中有ConfigParser类,可以很方便的从配置文件中读取数据(如DB的配置,路径的配置),所以可以自己写一个函数,实现读取config配置. config文件的写法比较简单,[sect ...

  8. java 时间戳加密_加密PHP中的时间戳并用Java解密

    我需要加密一个unix时间戳来调用第三方API . 在他们的文档中,他们指定我必须使用: 算法:128位AES,模式:CBC 填充:PKCS5Padding 初始化向量:"000000000 ...

  9. java pojo使用_在POJO中使用ThreadLocal进行Java嵌套事务

    java pojo使用 大多数嵌套事务是使用EJB实现的,现在我们尝试在POJO上实现嵌套事务. 在这里,我们使用了ThreadLocal的功能. 了解嵌套事务 事务可以嵌套在另一个内部. 因此,内部 ...

最新文章

  1. 28 数组中出现次数超过一半的数MoreThanHalfNum输入一个一维数组
  2. python绘制雷达图代码实例-PYTHON绘制雷达图代码实例
  3. WebService大讲堂之Axis2(6):跨服务会话(Session)管理
  4. 微信公众号开发入门教程第一篇
  5. UVA11464偶数矩阵
  6. bzoj 1061: [Noi2008]志愿者招募【最小费用最大流】
  7. Linux基础第四课——文件操作
  8. 001_Servlet简介
  9. ./configure,make,make install的作用
  10. 回归理性 务实推进 迎接AI新时代 2018中国人工智能大会完美收官
  11. WinCE的快速启动
  12. dubbo-admin管理平台搭建
  13. JAVA四种遍历Map的方法
  14. 单基因GSEA怎么做?
  15. Spring Boot Mybatis简单使用
  16. Mongodb 忘记密码
  17. 现控笔记(五)稳定性与Lyapunov方法
  18. Mac下配置Nginx负载均衡
  19. 基于STM32的中文字库解码
  20. 双盘转子动力学仿真c语言程序,[转载]基于ANSYS经典界面的双转子电机的转子动力学仿真...

热门文章

  1. 【Elasticsearch】es 报错 index has not yet rolled over with that alias
  2. 【Elasticsearch】Elasticsearch mapping 映射对象
  3. 【MySQL】MySQL 如何查看sql语句执行时间和效率
  4. 【Docker】Docer安装MySQL 8 并且远程登录
  5. spark学习-61-源代码:ShutdownHookManager虚拟机关闭钩子管理器
  6. 通过实现网站访问计数器带你理解 轻量级锁CAS原理,还学不会算我输!!!
  7. 什么时候出来的_DNF手游官网正版什么时候出来?地下城手游上线日期分享
  8. 2019.8.21页面功能的实现
  9. vue动态加载静态资源
  10. [UVALive 3661] Animal Run