重载与重写的区别

简介: 重载是方法名相同但参数列表不同,由编译器在编译时确定;重写是父子类中方法名和参数列表均相同,由运行时解释器根据对象实际类型决定调用哪个方法,可用@Override检查。
  • 重载是对象的方法之间,它们方法名相同,但方法的参数列表不同
  • 重写是父子类(包括接口与实现类)中两个同名方法,它们方法名相同,且方法的参数列表相同
  • 重载在编译阶段,由编译器根据传递给方法的参数来区分方法,例如
  • 而重写是在运行阶段,由虚拟机解释器去获取引用对象的实际类型,根据类型才能确定该调用哪个方法,例如
  • 有没有发生重写,可以使用 @Override 来检查
MyObject obj = ...
obj.test(123);   // 应该是调用 test(int x) 这个方法
obj.test("abc"); // 应该是调用 test(String x) 这个方法
Super obj = ...
obj.test();     // 到底是调用父类,还是子类的 test 方法,必须检查引用对象的实际类型才能确定

P.S.

  • 括号内的说明是为了严谨,自己知道就行,回答时不必说出,这样比较简洁
  • 个人觉得,在回答方法重载时,不必去细说什么参数的类型、个数、顺序,就说参数列表不同就完了
  • 个人觉得,重点在于点出:重载是编译时由编译器来区分方法,而重写是运行时由解释器来区分方法
  • 语法细节,问了再说,不问不必说
  • 重写时,子类方法的访问修饰符要 >= 父类方法的访问修饰符
  • 重写时,子类方法抛出的检查异常类型要 <= 父类方法抛出的检查异常类型,或子类不抛异常
  • 重写时,父子类的方法的返回值类型要一样,或子类方法返回值是父类方法返回值的子类
相关文章
|
3月前
|
安全 Java 索引
说说 java 中常见的集合类
本文介绍了Java集合框架的核心接口(Collection、List、Set、Map)及其常见实现类。图示展示了类间关系,重点解析ArrayList、LinkedList、HashSet、HashMap等实现原理与性能特点,并指出线程安全及进阶特性,助你掌握集合体系关键知识点。
|
3月前
|
算法 安全 数据安全/隐私保护
比较一下 DES、AES、SM4
DES、AES和SM4均为对称加密算法。DES采用56位密钥,已不推荐使用;AES支持128、192、256位密钥,全球广泛采用;SM4为我国商用密码标准,支持128位密钥,主要用于国内信息安全领域。
|
3月前
|
算法 数据安全/隐私保护
比较一下 RSA、ECDSA 和 SM2
RSA、SM2均为非对称加密算法。SM2基于椭圆曲线,密钥长度256位,安全性高且运算更快;RSA依赖大数分解,密钥通常1024-4096位。SM2为国密算法,受国内政策支持。ECDSA与SM2原理相似。
HTTP协议中常见的状态码 ?
HTTP状态码分为1xx、2xx、3xx、4xx、5xx五类。常见状态码包括:101(切换协议,如WebSocket)、200(请求成功)、302(重定向)、401(未认证)、404(资源未找到)、500(服务器内部错误),广泛应用于Web开发中。
|
3月前
|
存储 算法 Java
垃圾回收算法
内存回收三种算法:标记-清除速度快但有碎片;标记-整理无碎片但较慢;标记-复制将内存分为S0、S1两区,存活对象复制到S1后互换,无碎片且适合存活对象少的场景。
|
3月前
|
程序员 API
Lambda表达式
Lambda表达式又称匿名函数,语法为(参数) -&gt; 表达式,本质是函数对象,适用于行为参数化场景,如Stream API。与匿名内部类相比,Lambda更简洁,需函数式接口支持,运行时动态生成类,且this指向不同。
|
3月前
|
搜索推荐 算法 Java
请介绍一下你知道的排序算法有哪些
排序算法分为比较类与非比较类。比较类如快排、归并、堆排平均时间复杂度为O(n log n),插入排序为O(n²),但小规模或高有序数据下插入排序更优;实际应用常混合多种算法,如Java的排序实现。非比较类如计数、桶、基数排序可达O(n),依赖数据特性。
|
3月前
|
网络协议 安全 网络安全
什么是HTTP协议
HTTP是超文本传输协议,基于TCP,规定客户端与服务器通信规则。现代Web请求多使用HTTP或HTTPS。二者主要区别在于安全性:HTTP明文传输,易被窃取;HTTPS通过SSL加密,保障数据安全。此外,HTTP默认端口80,HTTPS为443。HTTPS更安全但消耗更多资源。
|
3月前
|
存储 安全
Cookie会话跟踪的原理?
会话跟踪常用Cookie、Session和令牌技术。Cookie由服务器通过Set-Cookie响应头发送,浏览器自动存储并在后续请求的Cookie请求头中携带,实现状态保持。但因其存储在客户端,可被用户修改或禁用,安全性较低。
|
3月前
|
安全 Java 数据库
解释悲观锁与乐观锁
悲观锁如synchronized,假定竞争总会发生,通过互斥保证线程安全,失败则阻塞;乐观锁如AtomicInteger,假定竞争少,不加锁,失败后重试。适用于低争用场景。二者核心在于对并发冲突的预期不同,思想广泛用于Java及数据库等领域。

热门文章

最新文章