方法重载和重写的区别[通俗易懂]

方法重载和重写的区别[通俗易懂]一、方法重载(overload)重载方法的定义是在同一个类中,某方法允许存在一个以上的同名方法,只要它们的参数列表不同即可。方法重载的作用:屏蔽了同一功能的方法由于参数不同所造成方法名称不同。方法重载判断原则: “两同一不同”两同:同类中,方法名相同;一不同:方法参数列表不同(参数类型、参数个数、参数顺序);       只要参数类型,参数个数,参数顺序有一个不同,参数列表就不同.注意:方法重载和…

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

一、方法重载(overload)

重载方法的定义是在同一个类中,某方法允许存在一个以上的同名方法,只要它们的参数列表不同即可

方法重载的作用屏蔽了同一功能的方法由于参数不同所造成方法名称不同

方法重载判断原则: “两同一不同”

两同:同类中,方法名相同

一不同:方法参数列表不同参数类型、参数个数、参数顺序);

       只要参数类型,参数个数,参数顺序有一个不同,参数列表就不同.

注意:方法重载和方法的返回值类型无关,只是一般要求返回值类型一致。

              参数列表和参数的名称没关系,方法的重载和形参没关系

方法重载和重写的区别[通俗易懂]

二、方法重写(override

方法覆写的原则(一同两小一大):

一同:

① 实例方法签名必须相同。 (方法签名= 方法名 + 方法的参数列表)

两小:

② 子类方法的返回值类型是和父类方法的返回类型相同或者是其子类

             子类可以返回一个更加具体的类。

③ 子类方法声明抛出的异常类型和父类方法声明抛出的异常类型相同或者是其子类

     子类方法中声明抛出的异常小于或等于父类方法声明抛出异常类型;

    子类方法可以同时声明抛出多个属于父类方法声明抛出异常类的子类(RuntimeException类型除外);

一大:

④ 子类方法的访问权限比父类方法访问权限更大或相等

private修饰的方法不能被子类所继承,也就不存在覆盖的概念.

判断是否是覆写方法的必杀技:@Override标签:若方法是覆写方法,在方法前或上贴上该标签,编译通过,否则,编译出错。

只有方法存在覆盖的概念,字段没有覆盖.

方法覆盖解决的问题:  当父类的某一个行为不符合子类具体的特征的时候,此时子类需要重新定义父类的方法,并重写方法体。

方法重载和重写的区别[通俗易懂]

三、区别

方法重载和方法覆盖(方法重写)的区别:

方法重载:Overload

方法重写:Override

二者本身一点关系都没有,仅仅只是因为名字很像.

——————————————————————-

方法重载:Overload

   作用: 解决了同一个类中,相同功能的方法名不同的问题.

               既然是相同的功能,那么方法的名字就应该相同.

    规则: 两同一不同.

              同类中,方法名相同,方法参数列表不同(参数类型,参数个数,参数顺序).

方法重写:Override

   作用:解决子类继承父类之后,可能父类的某一个方法不满足子类的具体特征,此时需要重新在子类中定义该方法,并重写方法体.

   规则: 一同两小,一大.

            一同:父类和子类的方法签名是相同的,所以,建议:直接拷贝父类中方法的定义到子类中,再重写方法体,就OK了

 

版权声明:如果有不同看法,或者是文中写错的地方,麻烦大佬留言指正文章错误,谢谢!!! 

原文出处:https://blog.csdn.net/blackplus28/article/details/80775936

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

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

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


相关推荐

  • Vue项目实战05:18n实现多语言自动切换-浏览器语言设置「建议收藏」

    Vue项目实战05:18n实现多语言自动切换-浏览器语言设置「建议收藏」什么是vue-i18ni18n是Internationalization这个英文的简写,即国际化的意思,vue-i18n是一款针对于vue开发的国际化插件,让项目支持多语言切换,以适应不同地区用户的需求。安装vue-i18n直接在项目中执行安装命令:npminstallvue-i18n–save​全局引入vue-i18n在项目中引入vue-i18n,实例化vue-i18n将需要加载的语言包通过require导入,这里看个人需求我只需要中英日文,所以引入zh-CN.js和en-US.j

    2022年6月4日
    37
  • 静态IP地址版EVE模拟器部署和使用说明

    静态IP地址版EVE模拟器部署和使用说明很多小伙伴由于还是初学者,对DHCP等协议并不熟悉,因此在使用模拟器的时候出现各种不理解的问题。为了让大家顺利的开始学习之路,特分享一个静态IP地址版本的供大家选择。前面的部署步骤请参考我的另一篇博客:https://blog.51cto.com/dashu666/2177842虚拟机导入完成之后,在开机之前,需要做如下操作:1、将虚拟机桥接到一个虚拟网络中,如下图:这里的…

    2022年5月1日
    261
  • 142. 环形链表 II(链表)[通俗易懂]

    142. 环形链表 II(链表)[通俗易懂]给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。说明:不允许修改给定的链表。进阶:你是否可以使用 O(1) 空间解决此题?示例 1:输入:head = [3,2,0,-4], pos = 1输出:返回索引为 1 的链表节点解释:链表中有一个环,其尾部

    2022年8月9日
    7
  • linux load average,Linux Load Average详解

    linux load average,Linux Load Average详解定义在Linux,以及其他类Unix的系统中,常用该系统正在进行的运算工作来衡量该系统的系统负荷(SystemLoad)。一个完全空闲的系统,它的负荷(SystemLoad)标记为0;每一个正在运行或者正在等待CPU资源的进程,会导致平均负荷(SystemLoad)加1。所以,如果一个系统的负荷是4,就是说有4个进程正在使用,或者正在等待CPU资源。因为系统负荷(SystemLoad)是…

    2022年7月17日
    18
  • Python实现索伯尔算子[通俗易懂]

    Python实现索伯尔算子[通俗易懂]Python实现索伯尔算子最近在学习Python,正好用sobel算子练练手,将就看看吧先放原图接着是用Opencv中sobel实现如下:#OpenCVori_img=cv.imread(“C:\\Users\\BLYX\\Desktop\\test\\temple1.jpg”)x=cv.Sobel(ori_img[:,:,0],cv.CV_16S,1,0)y=cv.Sobel(ori_img[:,:,0],cv.CV_16S,0,1)

    2022年7月14日
    15
  • JVM垃圾回收机制

    JVM垃圾回收机制

    2021年11月12日
    40

发表回复

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

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