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. linux 进程内存解析
  2. touch: cannot touch /usr/local/tomcat/logs/catalina.out: Permission denied解决方法
  3. pppoe错误代码 linux,PPPOE常见故障代码及分析
  4. CodeForces - 1484D Playlist(循环链表+bfs)
  5. 玩转oracle 11g(10):初步了解Rman备份
  6. SpringBoot2.0 基础案例(07):集成Druid连接池,配置监控界面
  7. 家谱(信息学奥赛一本通-T1388)
  8. 阿里云数据中台训练营第一期圆满落幕
  9. html安百分比布局,移动端百分比布局
  10. 【U-net】【粗读】Retinal blood vessel segmentation using fully convolutional network with transfer...
  11. 基于typescript的rtsp客户端实现
  12. 并发编程学习之CopyOnWriteArraySet
  13. html安装方正兰亭,方正兰亭字体
  14. 使用PR剪辑视频,mkv格式怎么无损转mp4
  15. 为了让智能手机厂商早日推出 5G 手机,高通真是操碎了心
  16. mysql多表格数据合并_mysql 如何实现两个表数据统计合并
  17. pandorabox安装迅雷远程下载插件
  18. 架构漫谈(八):从架构的角度看如何写好代码 + 我的思考
  19. Visual Studio Code(VSCode)中文包
  20. 10.3国庆作业(UART实验)

热门文章

  1. 南邮CTF:密码学 骚年来一发吗
  2. 基于Jeecgboot前后端分离的ERP系统开发系列--出库单(3)
  3. c#:表达式树概念及应用场景(Expression)
  4. 利用客户端js实现汉字简体繁体转换
  5. SpringBoot使用Redisson实现分布式锁秒杀
  6. 新型笔记本电脑 用GHOST方法安装win7或win10
  7. CSS样式的格式命名,CSS命名规范:BEM
  8. ARCMAP ARCPY 批量统一修改多图层样式,自动化批量导出TIF至图片,并自动修改图片标题 ARCGIS
  9. 啦啦外卖50.9全开源至尊版源码
  10. 【兴趣书签】自学绘画入门