深入理解java中的重载和覆盖

作者:jingxian 时间:2023-01-05 00:24:22 

说到java中的重载和覆盖呢,大家都很熟悉了吧,但是呢我今天就要写这个。

本文主题:

一.什么是重载

二.什么是覆盖

三.两者之间的区别

重载(overload):

在一个类中,如果出现了两个或者两个以上的同名函数,只要它们的参数的个数,或者参数的类型不同,即可称之为该函数重载了。

即当函数同名时,只看参数列表。和返回值类型没关系。

重载使用的时候需要注意:

1、在使用重载时只能通过不同的参数样式。例如,不同的参数类型,不同的参数个数,不同的参数顺序。

2、方法的异常类型和数目不会对重载造成影响。

3、对于父类来说,子类可以重载与继承父类中的方法同名的方法,如果某一方法在父类中是访问权限是priavte,那么就不能在子类对其进行重载,如果定义的话,也只是定义了一个新方法,而不会达到重载的效果。

覆盖(override):

当子父类中出现了一模一样的方法时,建立子类对象会运行子类中的方法。好像父类中的方法被覆盖掉一样。所以这种情况,是函数的另一个特性:覆盖。

什么时候使用覆盖呢?

当子类继承父类时,父类的功能内容需要修改时,可以通过覆盖来实现

在方法覆盖时,注意两点:

1、子类覆盖父类时,必须要保证,子类方法的权限必须大于等于父类方法权限可以实现继承。否则,编译失败。

2、覆盖时,要么都静态,要么都不静态。 (静态只能覆盖静态,或者被静态覆盖)YES

3、被final修饰的方法是一个最终方法,不可以被覆盖。

4、子类覆盖父类的方法时,只能比父类抛出更少的异常,或者是抛出父类抛出的异常的子异常,因为子类可以解决父类的一些问题,不能比父类有更多的问题。

重载和覆盖的区别:

1、方法的覆盖是子类和父类之间的关系,是垂直关系;方法的重载是同一个类中方法之间的关系,是水平关系。

2、覆盖只能由一个方法,或只能由一对方法产生关系;方法的重载是多个方法之间的关系。

3、覆盖要求参数列表相同;重载要求参数列表不同。

4、覆盖关系中,调用那个方法体,是根据对象的类型来决定;重载关系,是根据调用时的实参表与形参表来选择方法体的。

标签:java,重载,覆盖
0
投稿

猜你喜欢

  • Spring Cloud Ribbon的使用原理解析

    2021-10-11 02:03:01
  • Java 回调callback举例详解

    2023-11-11 16:25:09
  • C#实现冒泡排序和插入排序算法

    2021-07-18 17:01:53
  • struts2拦截器_动力节点Java学院整理

    2023-06-11 10:11:36
  • Unity解析gif动态图操作

    2022-05-27 08:16:43
  • MybatisPlus代码生成器的使用方法详解

    2021-08-26 07:51:38
  • 老生常谈Java动态编译(必看篇)

    2022-04-02 14:19:38
  • Android异步方法以同步方式实现

    2022-11-05 15:13:50
  • 浅析Mybatis Plus和Mybatis的区别

    2022-12-05 18:14:18
  • MyBatis-Plus联表查询(Mybatis-Plus-Join)的功能实现

    2023-11-25 03:24:33
  • Spring实战之方法级别缓存用法示例

    2022-10-20 02:00:32
  • android使用surfaceview+MediaPlayer播放视频

    2023-12-03 08:45:56
  • Android实现动画效果详解

    2022-04-19 20:37:43
  • Android Flutter实现3D动画效果示例详解

    2022-04-12 19:34:35
  • Android实现图片反转、翻转、旋转、放大和缩小

    2022-07-04 20:15:34
  • SpringBoot2学习之springboot与spring区别分析

    2023-02-22 17:44:28
  • Springboot中加入druid连接池

    2023-08-08 05:47:22
  • java动态线程池的简单实现思路

    2023-10-18 15:53:46
  • RocketMQ broker 消息投递流程处理PULL_MESSAGE请求解析

    2021-11-18 17:12:49
  • Android基于ViewPager+Fragment实现左右滑屏效果的方法

    2023-11-16 10:50:38
  • asp之家 软件编程 m.aspxhome.com