Java中重载与重写的特点和区别[通俗易懂]

Java中重载与重写的特点和区别[通俗易懂]一、重载(overload)重载:发生在Java的同一个类里面,通过定义相同的方法,定义不同的参数列表来区分开这些相同的方法,参数列表的不同可以是参数的类型、参数的个数和参数的顺序。当我们调用这些方法的时候通过传入参数的不同,在运行时Java虚拟机会自行调用不同的方法来进行处理。由于Java的修饰符都可以访问同一个类里面的方法,所以方法的重载与方法的修饰符无关;Java的返回值不能区别这些方法,因为返回值是在运行后才体现出来的,而两个参数列表相同仅仅是返回值相同的方法在Java编译时就会报错,虚拟机在运行

大家好,又见面了,我是你们的朋友全栈君。

一、重载(overload)

重载发生在Java的同一个类里面,通过定义相同的方法,定义不同的参数列表来区分开这些相同的方法,参数列表的不同可以是参数的类型、参数的个数和参数的顺序。当我们调用这些方法的时候通过传入参数的不同,在运行时Java虚拟机会自行调用不同的方法来进行处理。由于Java的修饰符都可以访问同一个类里面的方法,所以方法的重载与方法的修饰符无关;Java的返回值不能区别这些方法,因为返回值是在运行后才体现出来的,而两个参数列表相同仅仅是返回值相同的方法在Java编译时就会报错,虚拟机在运行时根本就不知道要调用的那种方法,所以方法的重载和返回值也无关。

重载举例:

在这里插入图片描述在这里插入图片描述

二、重写(Override)

我们这里所说的重写是指在Java中子类里面重写了父类的方法,当子类里面具有了和父类相同的方法的时候,子类的方法覆盖了父类的方法,此时就构成了方法的重写。需要注意的是,子类重写父类里面的方法时子类的方法名,返回值和参数列表都要和父类里面被重写的方法一样,子类的访问控制修饰符范围不能比父类的范围小,子类的方法抛出的异常不能比父类的方法抛出的异常更多。被final修饰的方法不能被重写,如果想要调用父类中同名的方法,可以使用super关键字来进行调用。

重写举例

在这里插入图片描述

三、重载和重写的区别

1、出现位置的不同:重载发生在一个类里面,重写发生在有继承关系的两个类里面。
2、访问控制修饰符的不同:重载对访问控制修饰符没有要求,重写时子类的访问控制修饰符不能比父类的范围小。
3、返回值不同:重载对返回值没有要求,重写时返回值必须相同。
4、参数列表不同:重载时参数列表必须不同,重写时参数列表必须相同。
5、抛出异常的不同:重载的方法可以抛出不同的异常,重写时子类抛出的异常类型一定不能比父类多。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/157108.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 基于HTTP重定向的GSLB工作流程「建议收藏」

    基于HTTP重定向的GSLB工作流程「建议收藏」1.用户向网站的localdns请求域名解析2.localdns向用户返回GSLB设备的ip地址,如果GSLB系统本身有负载均衡,则返回的IP地址就是自身负载均衡后的某台设备的IP地址3.用户向这台GSLB设备发起GET请求,请求该网站的网页的内容.如果网页上有图片,文字,视频则会发起多个HTTP请求4.GSLB设备将综合分析用户ip,内容分布,设备负载,链路状况等实时…

    2022年5月6日
    67
  • 魔百盒CM211-2系列(ZG/CH/YS)海思MV300H/310芯片-刷机固件及教程

    魔百盒CM211-2系列(ZG/CH/YS)海思MV300H/310芯片-刷机固件及教程魔百盒CM211-2系列(ZG/CH/YS)海思MV300H/310芯片-刷机固件及教程固件说明:1、魔百盒CM211-2-全系列-海思Hi3798MV300H/310-通用NAND和EMMC卡刷固件,支持红外蓝牙遥控,支持常见多种无线,同时支持RTL8822BS、RTL8822CS、MT7661、MT7663、MT7668等无线;2、解除官方屏蔽无线功能,有线和无线正常使用;3、代工标识说明:一般没标识是朝歌代工,带有ZG字母的就是朝歌代工,带有CH字母的就是长虹代工,带有YS或YST字

    2022年7月24日
    63
  • bitblt函数_统计参数的含义

    bitblt函数_统计参数的含义【转载请注明出处: http://blog.csdn.net/lzl124631x】接口BOOLBitBlt( _In_ HDChdcDest, _In_ intnXDest, _In_ intnYDest, _In_ intnWidth, _In_ intnHeight, _In_ HDChdcSrc, _I

    2022年10月19日
    2
  • 如何获取iphone的UUID「建议收藏」

    如何获取iphone的UUID「建议收藏」开发的iOS应用如果再测试环境需要运行在真机设备上,那么需要在苹果的开发者后台注册测试的设备,此时需要用到UUID,下面是罗列的获取UUID的常见方法:1,用iTunes获取手机连接电脑,打开iTunes软件,然后点击序列号字母处即可获取,如果没有安装iTunes需要先安装一个。2,通过第三方工具iTools获取手机连接电脑,打开iTools软件,点击更多。出现设备标识即为手机的UDID,单击复制即可。3,通过第三方工具PP助手获取手机连接电脑,打开PP助手软件,设备标识即为手机的

    2022年8月10日
    8
  • 区块链对传播格局_博弈论66个经典例子

    区块链对传播格局_博弈论66个经典例子一、区块链数据结构与算法首先,讲一下区块链基本的技术内容。区块链,本质是由两个部分构成:第一部分是数据结构,第二部分是算法。这两部分是可以分割的,也最好分割开来看。首先看区块链的数据结构,其实非常简单:它是由很多的区块组成的,每个块都包括很多的数据,主要是交易数据。区块互相之间的链接就是通过hash过程,也就说我们把前一块的内容hash成一个数字签名,然后放在后一块里面,形成一个链…

    2022年8月31日
    2
  • 秒杀全网!研发、运营必备实用工具网站

    程序员开发需要具备良好的信息检索能力,为了备忘(收藏夹真是满了),将开发过程中常用的网站进行整理(不断更新中~)。

    2022年4月5日
    67

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号