我们在平时开发的时候经常会遇见这样一个问题,方法的重载和重写。有时候经常搞混,这篇文章就是为了很好的去整理区分一下。

一个类中,可以有很多的构造方法,而且名字相同都是类名,其实这些方法就已经构成了重载。也就是说,在一个类中,可以有很多名字相同的不同方法。现在一个问题来了,就是java是如何区分这些方法的呢?

方法重载

其实区分重载,有一个很简便的方法,那就是每一个方法有一个独一无二的参数列表。

由以上代码可以看到:

1、参数个数不同可以区分

2、参数的顺序不同可以区分。

注意;返回值类型不同不能区分。

为什么返回值类型不同不能区分呢?这是因为有时候我们定义的方法,我们只是想要简单地去调用,而不想去获取他的返回值。

比如:在调用fff()时,只需要调用fff()或者是fff(1,"数据")而不去获取他的返回值。这样jvm是无法区分的。

方法重写

先看一下重写的概念:

1、在子类中可以根据需要对从基类中继承来的方法进行重写。

2、重写的方法和被重写的方法必须具有相同方法名称、参数列表和返回类型。(注:返回值可以为父类中返回值的子类型.参数若为子类,则不是重写是重载)

3、重写方法不能使用比被重写的方法更严格的访问权限。

4、重写方法不能声明抛出比被重写方法范围更大的异常类型。

总结:重写是子类对所继承父类相同方法的一种更改,这个更改需要遵循格式按照父类的格式,访问权限,抛出异常等等,都在父类方法控制范围内,内部具体实现可以实现不同的效果。

通俗一点来说:重写就是对父类的的同一个方法的改写,但是别人怎么知道你这是重写,不是添加的新方法?这就要求格式必须跟父类相同,别人一看,呀,他俩长得一模一样(指的上面2,3,4规则),肯定是重新写了,就是重写。

看一个例子:

定义父类:

定义子类

这样就完成了方法的重写。

重载的方法通过什么进行区分java,java重载和重写,你能正确区分吗?相关推荐

  1. 在java中私有方法能被重载吗_我可以在Java中重载私有方法吗?

    重载是实现多态的一种机制,其中,一个类包含两个具有相同名称和不同参数的方法. 每当您调用此方法时,方法主体都将基于参数与方法调用绑定. 重载私有方法 是的,我们可以在Java中重载私有方法,但是您可以 ...

  2. java构造方法重载_Java 重载、重写、构造函数的实例详解

    Java 重载.重写.构造函数的实例详解 方法重写 1.重写只能出现在继承关系之中.当一个类继承它的父类方法时,都有机会重写该父类的方法.一个特例是父类的方法被标识为final.重写的主要优点是能够定 ...

  3. Educoder/头歌JAVA——JAVA面向对象:封装、继承和多态

    目录 第1关:什么是封装,如何使用封装 任务描述 相关知识 什么是封装 ​编辑 封装的意义 实现Java封装的步骤 编程要求 第2关:什么是继承,怎样使用继承 相关知识 继承的基本概念 继承的特性 多 ...

  4. java中重载 参数顺序_Java方法中的参数太多,第4部分:重载

    java中重载 参数顺序 期望将过多的参数传递给Java方法的问题之一是,该方法的客户端很难确定它们是否以适当的顺序传递了适当的值. 在以前的文章中,我描述了如何使用自定义类型 , 参数对象和构建器来 ...

  5. Java中方法重载和方法重写的区别

    文章目录 1 Java中方法重载和方法重写的区别 1 Java中方法重载和方法重写的区别 主要区别如下: 方法重载: 在同一个类中 方法名相同 参数个数.顺序.类型不同 返回值类型.访问修饰符任意 方 ...

  6. java 方法重载 应用举例,Java 实例 - 重载(overloading)方法中使用 Varargs

    以下实例演示了如何在重载方法中使用可变参数:/* author by w3cschool.cc Main.java */public class Main { static void vaTest(i ...

  7. Java黑皮书课后题第7章:7.8(求数组的平均值)使用下面的方法头编写两个重载的方法,返回数组的平均数。编写一个测试程序,提示用户输入10个double型值,然后调用这个方法显示平均值

    7.8(求数组的平均值)使用下面的方法头编写两个重载的方法,返回数组的平均数.编写一个测试程序,提示用户输入10个double型值,然后调用这个方法显示平均值 题目 题目描述 破题 代码 运行实例 题 ...

  8. JAVA SE、EE、ME,JRE、JDK,基本数据类型,访问修饰符、函数、封装的概念、UML类图、构造方法、this关键字、static关键字、方法重载、方法重写、包(packahe)

    运行第一个JAVA程序: 这里使用的开发环境是eclipse,新建一个java工程,然后可以看到src这个是存放java代码的地方,然后在src文件右击新建一个class(类),然后可以看到下图,同样 ...

  9. java方法重载和重载方法_我们可以在Java中重载main()方法吗?

    java方法重载和重载方法 The question is that "can we overload main() method in Java?" 问题是"我们可以在 ...

最新文章

  1. NODEJS 使用 XLSX模块导出excel文件
  2. 哪些人适合学软件测试呢
  3. Science:导入了人类特有基因后,猴脑有了进化的趋势
  4. ASP.NET网络编程中经常用到的27个函数集
  5. 解决pip安装时速度慢的问题 镜像源(pip install -i [镜像源地址] [包名])
  6. 新建centos6虚拟机黑屏_虚拟机centos无法进去选择系统界面,也就是开机过bios就黑屏解决方案...
  7. js中遍历注册事件时索引怎么获取
  8. 接口中默认方法和静态方法_接口中的默认方法和静态方法
  9. cv图像翻转_涨点技巧!汇集13个Kaggle图像分类项目的性能提升指南
  10. Keras-10 模型可视化
  11. 密码必须至少为6个字符_1081 检查密码 (15分)
  12. Python爬虫之(四)urllib库的高级用法
  13. vue文件的三大组成部分
  14. 吉林大学研究生课程-面向对象方法2020考试复习资料
  15. 向上传递 java_Java向上转型向下转型
  16. c++ 接口继承和实现继承
  17. 蓝桥杯 7-2求arccos值 C++算法提高 HERODING的蓝桥杯之路
  18. 新手学习电脑知识的一些方法 oldtimeblog
  19. 干货 |《深入理解Elasticsearch》读书笔记
  20. 学生公寓管理系统-javaweb

热门文章

  1. 小猪的Python学习之旅 —— 20.抓取Gank.io所有数据存储到MySQL中
  2. 什么是softmax回归?
  3. 彩色星球图片生成4:转置卷积+插值缩放+卷积收缩(pytorch版)
  4. 万词霸屏是什么来的 能产生什么效果
  5. 浅谈关于CPU的架构和工艺(1)
  6. VLANIF接口与路由器三层接口对接
  7. MIUI12 玩机技巧
  8. 文件系统(三)—老祖宗长的什么样
  9. 0基础学java可行吗_零基础可以学习JAVA吗?
  10. 复变函数 —— 5. 什么是初等复变函数