参考:https://blog.csdn.net/xujiangdong1992/article/details/76853118

一、覆盖(又叫做重写)
具体解释是重写(覆盖)了一个方法,以实现不同的功能。一般是用于子类在继承父类时,重写(重新实现)父类中的方法。

重写(覆盖)的规则:
1、重写方法的参数列表必须完全与被重写的方法的相同,否则不能称其为重写而是重载.
2、重写方法的访问修饰符一定要大于被重写方法的访问修饰符(public>protected>default>private)。
3、重写的方法的返回值必须和被重写的方法的返回一致;
4、重写的方法所抛出的异常必须和被重写方法的所抛出的异常一致,或者是其子类;
5、被重写的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行重写。
6、静态方法不能被重写,可以被重载。(如果强行重写成非静态方法,会编译出错)

二、重载
**重载:**一般是用于在一个类内实现若干重载的方法,这些方法的名称相同而参数形式不同。

重载的规则:
1、在使用重载时只能通过相同的方法名、不同的参数形式实现。不同的参数类型可以是不同的参数类型,不同的参数个数,不同的参数顺序(参数类型必须不一样);
2、不能通过访问权限、返回类型、抛出的异常进行重载;
3、方法的异常类型和数目不会对重载造成影响;

多态的概念比较复杂,有多种意义的多态,一个有趣但不严谨的说法是:继承是子类使用父类的方法,而多态则是父类使用子类的方法。
一般,我们使用多态是为了避免在父类里大量重载引起代码臃肿且难于维护。

例子:
/*方法的重载,就是一个类中允许同时存在一个以上的同名方法,*只要这些方法的参数个数或者类型不同即可。*/
public class OverLoadTest{public static int add(int a, int b) {    //定义一个方法return a + b;}//定义一个与第一个方法相同的名称但参数类型不同的方法public static double add(double a, double b) {return a + b;}public static int add(int a) {    //定义与第一个方法参数个数不同的方法return a;}public static int add(int a, double b) {    //定义一个成员方法return 1;}//这个方法与前一个方法参数次序不同public static int add(double a, int b) {return 1;}public static void main(String args[]) {System.out.println("调用add(int,int)方法" + add(1, 2));System.out.println("调用add(double,double)方法" + add(2.1, 3.3));System.out.println("调用add(int)方法" + add(1));}
}

三、关于二者具体的理解:

以前的理解是:

重写就是保证跟父类原有方法的返回值,方法名,参数列表一致的前提下,在子类中将函数重新实现一遍。
而重载就是指返回值和方法名相同,参数列表不同的函数的实现。

现在细化下理解:

方法重写(Overriding),是继承与实现中的一个概念,主要指抽象方法的重写。
方法重载(Overloading)
两者都是Java中多态性一个的一个体现,方法重写是父类与子类之间多态性的体现,而方法重载主要是类内部多态性的一个体现。

**四、二者的区别:(重点)
具体区别有人罗列为:

重写(override)又名覆盖:
1.不能存在同一个类中,在继承或实现关系的类中;
2. 名相同,参数列表相同,方法返回值相同,
3.子类方法的访问修饰符要大于父类的。
4.子类的检查异常类型要小于父类的检查异常。

重载(overload)
1.可以在一个类中也可以在继承关系的类中;
2.名相同;
3.参数列表不同(个数,顺序,类型) 和方法的返回值类型无关。

**简化为:** 重写就是再写一遍,重载就是再加一个。

覆盖(重写)与重载的区别相关推荐

  1. java重写(覆盖)与重载的区别

    java重写(覆盖)与重载的区别 1.重写(覆盖Override) 重写发生在接口与实现类,父类与子类之间,特点如下: 方法名,返回值类型必须相同,参数列表必须相同 访问权限只能等于或者大于父类的访问 ...

  2. 重写与重载的区别与作用

    重写与重载的区别与作用 一.重写(Override) 也就是子类重新编写,或覆盖父类继承下来的方法,也叫方法覆盖,主要用于当父类提供的方法无法满足子类需求时,可在子类中定义和父类相同的方法进行重写. ...

  3. java重写和重载 关键字_Java重写和重载的区别

    一.重写(Override) 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变.即外壳不变,核心重写! 二.重载(Overload) 重载(overloading) 是 ...

  4. 重写与重载的区别 以及 重写中super的使用

    重写是父类方法与子类方法有共同的参数名参数列表,返回类型必须父类的方法一致.子类的访问修饰符一定要大于等于父类的访问修饰符.如果在子类中还需要用到父类的方法,用super.method() 然后继续写 ...

  5. Java 方法重写与重载的区别 示例 重载多数相加求和 重写toString()和equals()

    Java 方法重写与重载的区别 重载:在同一个类中,当方法名相同,形参列表不同的时候 多个方法构成了重载 重写:在不同的类中,子类对父类提供的方法不满意的时候,要对父类的方法进行重写. 名称\属性 E ...

  6. 【C#】重写和重载的区别

    导读:学习C#的时候,其实没想那么多的.就想着把视频看完,把例子做一下就好了,其实真心不懂那些玩意儿是什么,就好像是又回到了学VB的时候.可是,边上师哥压榨我这本就不聪明的脑袋瓜,问了我好多问题,于是 ...

  7. Java—重写与重载的区别

    Java-重写与重载的区别 这几周开始看Java的知识,发现有一个有趣的现象就是,前两天刚看过的知识点,过一天又忘掉了.而且很多东西堆在脑子里像浆糊一样.所以边学习边总结是很重要的,今天想写一篇关于重 ...

  8. 01Java方法重写与重载的区别

    1.方法重载(Overload) 概念:: 在同一个类中,"功能1"和"功能2"功能相似,可以考虑将他们的方法名命名一致,这样代码既美观,又便于后期代码编写(容 ...

  9. Java方法重写与重载的区别

    Java方法重写(Override)与重载(Overload)的区别(超详细) 首页在我们要学习这个知识点之前,应该要先了解什么是多态? 在最初学习java的时候,人们都知道,java这种面向对象的语 ...

  10. python重写和重载的区别_Java 重写(Override)与重载(Overload)

    Java 重写(Override)与重载(Overload) 重写(Override) 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变.即外壳不变,核心重写! 重写的 ...

最新文章

  1. Android 动画之View动画效果和Activity切换动画效果
  2. 震撼三观:从细胞到宇宙
  3. Linux发布环境,linux发布环境初始化脚本
  4. HDU-2062 Subset sequence 递推
  5. android编译非静态内部类,Android 非静态内部类/匿名类引起的内存泄漏
  6. Xshell替代品 -- FinalShell
  7. 【渝粤教育】电大中专跨境电子商务理论与实务 (28)作业 题库
  8. 好程序员教程分析Vue学习笔记五
  9. Redis中的数据结构与常用命令
  10. Android APK 签名问题
  11. RPC规范接口实现模块Flask-JSONRPC
  12. python----------基于TCP的交互式游戏设计
  13. win7美化_桌面美化,无敌的dock软件,桌面便捷工具、桌面整理、更新鼠标美化...
  14. 电感电容串联起什么作用
  15. 计算机主机光驱弹不出来怎么办,光驱弹不出来怎么办,教你win10光驱弹不出来的应对办法...
  16. Ubuntu压缩文件的分卷压缩和解压
  17. Laravel打印操作的sql 阿星小栈
  18. 5G的SUCI、SUPI、5G-GUTI使用场景及关系
  19. opencv-车辆牌照识别(一)
  20. CDH/HDP迁移之路

热门文章

  1. 自定义Android工程的out目录
  2. PowerBI-时间智能函数-SAMEPERIODLASTYEAR
  3. 安工大计算机组成原理实验报告,计算机组成原理实验报告.doc
  4. linux找不到无线网卡么,找不到无线网卡解决办法
  5. 图表数据分析怎么做,举实例给你说清楚
  6. linux音频函数接口,Linux音频驱动-OSS和ALSA声音系统简介及其比较
  7. QOS概述(一)服务模型
  8. 【NLP】第16章 使用RNN 和注意力的自然语言处理
  9. [Python]第一章(建议收藏)
  10. 这五款小众软件你肯定不知道