1、首先是含义不同

1)方法重载是在同一个类中,声明多个同名方法,通过参数列表来区分不同的方法,与参数列表的数量、类型和顺序有关,与修饰符和返回值类型以及抛出异常类型无关

2)方法重写(方法覆盖)的前提是发生在具有继承关系的两个类之间,方法重写有以下规则:

参数列表,返回值,方法名必须保持一致
重写方法的访问权限范围必须大于等于父类方法
重写方法的抛出异常类型范围不能大于父类方法
2、方法的重载和重写的作用不同

重载:在同一个类中为一种行为提供多种实现方式并提高可读性

重写:父类方法无法满足子类的要求,子类通过方法重写满足需求

面试时,问:重载(Overload)和重写(Override)的区别?
答:方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载;重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的参数列表,有兼容的返回类型,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常(里氏代换原则)。重载对返回类型没有特殊的要求,不能根据返回类型进行区分。

7. 重载(overload)和重写(override)的区别?重载的方法能否根据返回类型 进行区分? 方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态 性。重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为 重载;重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的返回类型,比父类被重写方 法更好访问,不能比父类被重写方法声明更多的异常(里氏代换原则)。重载对返回类型没有特殊的要求。 方法重载的规则: 1.方法名一致,参数列表中参数的顺序,类型,个数不同。 2.重载与方法的返回值无关,存在于父类和子类,同类中。 3.可以抛出不同的异常,可以有不同修饰符。

30 方法重写的规则: 1.参数列表必须完全与被重写方法的一致,返回类型必须完全与被重写方法的返回类型一致。 2.构造方法不能被重写,声明为 final 的方法不能被重写,声明为 static 的方法不能被重写,但是能够被再次 声明。 3.访问权限不能比父类中被重写的方法的访问权限更低。 4.重写的方法能够抛出任何非强制异常(UncheckedException,也叫非运行时异常),无论被重写的方法是 否抛出异常。但是,重写的方法不能抛出新的强制性异常,或者比被重写方法声明的更广泛的强制性异常,反之则 可以。

8. 为什么函数不能根据返回类型来区分重载?

该道题来自华为面试题。 因为调用时不能指定类型信息,编译器不知道你要调用哪个函数。 例如: 1.float max(int a, int b); 2.int max(int a, int b); 当调用 max(1, 2);时无法确定调用的是哪个,单从这一点上来说,仅返回值类型不同的重载是不应该允许的。 再比如对下面这两个方法来说,虽然它们有同样的名字和自变量,但其实是很容易区分的: 1.void f() {} 2.int f() {} 若编译器可根据上下文(语境)明确判断出含义,比如在 int x=f()中,那么这样做完全没有问题。然而, 我们也可能调用一个方法,同时忽略返回值;我们通常把这称为“为它的副作用去调用一个方法”,因为我 们关心的不是返回值,而是方法调用的其他效果。所以假如我们像下面这样调用方法: f(); Java 怎样判断 f()的具体调 用方式呢?而且别人如何识别并理解代码呢?由于存在这一类的问题,所以不能

java重载和重写的区别相关推荐

  1. java重载与重写的区别你懂了吗

    目录: 1.重载 2.重写 1.重载 (1) Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义. (2)重载的特点: 1.方法名要一样,但是参数类型或个 ...

  2. java重载与重写的区别+重写父类equals方法的完美实现

    [0]README 0.1) 本文章节[1]和[2]的内容转自 http://www.cnblogs.com/bluestorm/archive/2012/03/01/2376236.html : 旨 ...

  3. Java 重载与重写的区别

    1.重写(Override) 从字面上看,重写就是 重新写一遍的意思.其实就是在子类中把父类本身有的方法重新写一遍.子类继承了父类原有的方法,但有时子类并不想原封不动的继承父类中的某个方法,所以在方法 ...

  4. Java - 重载 与 重写 的区别

    静态分派与动态分派 1. 静态类型[外观类型] => 方法执行版本 => 编译期确定 2. 实际类型 => 方法执行版本 => 运行期确定 静态解析与动态连接 1. 静态解析: ...

  5. 方法的重载与重写_深入解析JAVA重载与重写的区别

    重载的概念 在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可. 同一个类.相同方法名 参数列表不同:参数个数不同,参数类型不同 跟方法的权限修饰符.返回值类型.形参变量 ...

  6. JAVA重载和重写的区别?

    重载:方法名相同,参数不同(参数类型或者长度) 重载和修饰符和返回类型无关. 一是方法的参数列表必须改变,包括参数的类型,参数的个数多少,参数顺序. 二是重载对返回类型,访问修饰符,异常声明没有任何限 ...

  7. 总结java重载和重写的区别

    1.重载是参数个数 或 类型 或 顺序不一样:重写是参数列表完全一样 2.重载是同一个类中,方法与方法之间的关系:重写是不同类中,子类与父类的关系. 3.构造器可以重载,但不能重写. 4.重载可以有不 ...

  8. java 可以重载等于号码_Java面试之Java基础4——重载与重写的区别

    目录 重载与重写的概念 重载与重写的区别 重载与重写的总结 构造器是否能被重写override 为什么函数不能根据返回类型来区分重载 重载与重写的概念 重载:同样一个方法可以根据输入参数列表的不同,做 ...

  9. 开课吧-Java常见面试题:重载和重写的区别?

    重载和重写的区别? 方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性. 重载发生在一个类中,同名的方法如果有不同的参数列表(类型不同.个数不同.顺序 ...

最新文章

  1. unix修改ip和计算机名,UNIX shell获取IP和修改IP
  2. 中国生物燃料市场产能预测与十四五战略前景展望报告2022年
  3. 一个很不错的LINUX基本操作归纳
  4. SpringBoot2整合Activiti6工作流框架
  5. jquery ajax 参数可以序列化
  6. 用css3和ico图片实现火狐社区的分享图标
  7. [LeetCode] Power of Four
  8. IDC 机房空调问题解决方案
  9. lena图的直方图以及与其他图像的直方图匹配
  10. json react 展示工具_基于jsoneditor二次封装一个可实时预览的json编辑器组件(react版)...
  11. 用MySQL判断一个数为素数_判断一个数是否是素数
  12. 背景透明及引发的文字透明问题
  13. PhotoShop软件笔记
  14. 蚂蚁金服前端实习生二面面经
  15. 代码在线执行工具(PHP,Java,C++ 等)
  16. android 转盘菜单,Android实现可点击的幸运大转盘
  17. 空间四点定位原理及应用
  18. 阿里妈妈不能攻百度也不能守淘宝 !
  19. 分享电脑便捷妙招,电脑小白们快码住
  20. QML < 5 > QML 访问C++ 类 (函数Q_INVOKABLE、枚举Q_ENUMS 、成员变量Q_PROPERTY、自定义结构体QVariantMap、List数据QVariantL

热门文章

  1. Verilog generate循环
  2. 【华为HDZ深圳站】授旗成立并成功举办首场区块链专题技术交流会
  3. 歪写数学史(分析的化身——欧拉)
  4. 程序员必须健身--------做一个正确的深蹲有哪些要点
  5. Vue3-Vite-TS-AntD项目搭建
  6. linux oracle用户解锁
  7. idea页面只能显示一个项目,idea使用教程——一个窗口中同时打开多个项目
  8. pytorch深度学习原理实战-rightness函数
  9. display:grid 网格布局
  10. mysql授权远程登录