当前位置: 首页 > news >正文

说说重载(Overloading)与重写(Overriding)的区别

重载(Overloading):在同一个类中,允许存在多个同名的方法,只要它们的参数列表(参数的数量、类型或顺序)不同即可。这是实现多态性的一种表现,它允许一个类具有多个相同名称但功能不同的方法。

重写(Overriding):子类可以提供一个特定签名的方法,该方法具有与父类中的某个方法完全相同的名称、返回类型和参数列表(称为方法签名)。通过这种方式,子类可以定义或修改继承自父类的特定行为。重写是面向对象编程中实现多态性的重要机制之一。

示例

重载示例

public class Calculator {// 方法1:加法,接受两个整数参数public int add(int a, int b) {return a + b;}// 方法2:加法,接受两个浮点数参数,这是重载public double add(double a, double b) {return a + b;}// 方法3:加法,接受三个整数参数,再次重载public int add(int a, int b, int c) {return a + b + c;}
}

重写示例

class Animal {// 父类中的方法public void eat() {System.out.println("This animal eats food.");}
}class Dog extends Animal {// 子类重写父类的方法@Overridepublic void eat() {System.out.println("Dog eats meat.");}
}// 使用
public class Test {public static void main(String[] args) {Dog myDog = new Dog();myDog.eat(); // 输出: Dog eats meat.}
}

主要区别

  1. 位置:重载是发生在同一个类中的方法,而重写是发生在子类与父类之间的。
  2. 参数列表:重载要求参数列表必须不同(参数类型、顺序、数量);重写要求方法签名(方法名、参数列表)完全相同。
  3. 访问权限:子类重写的方法不能降低父类方法的访问权限(例如,父类方法是public,子类重写时不能是protected或更低)。
  4. 返回类型:对于重写,子类的返回类型要么与父类完全相同,要么是父类返回类型的子类型(在Java中,如果返回值是基本类型,则必须完全相同;如果是对象类型,则必须是同一类型或其子类型,且方法签名必须完全相同)。而重载不关心返回类型。

优势和适用场景

  • 重载的优势在于它允许一个类以不同的方式执行同一个操作,具体取决于传入的参数。这使得方法名可以更加直观,减少了记忆和理解上的负担。
  • 重写的优势在于它允许子类修改或扩展继承自父类的行为。这是多态性的核心,它使得父类类型的引用可以指向子类对象,并且当调用某个方法时,实际执行的是子类版本的方法。这增加了程序的灵活性和可扩展性。

http://www.mrgr.cn/news/12732.html

相关文章:

  • APP、小程序对接聚合广告平台需要提供哪些资料?
  • java中用雪花算法生成64位的长整数
  • 微深节能 卸料小车远程智能控制系统 格雷母线定位系统
  • 每日刷力扣SQL(九)
  • Qt详解QParallelAnimationGroup并行动画组
  • 后端面试真题整理
  • Day24 第11站 出发 c++!
  • 如何构建社区康养管理系统?实现老年人服务管理全攻略【Java SpringBoot】
  • 在Excel中使用VLOOKUP函数时避免显示NA和0
  • Linux调整SSH登录访问方式
  • 13.JS学习篇-ES6 React 项目模板
  • 论文速览【LLM】 —— 【ORLM】Training Large Language Models for Optimization Modeling
  • Html5—表单
  • 第2章-07-客户端IP与UserAgent
  • LUOGU P2048 [NOI2010] 超级钢琴(贪心+堆)
  • 信息安全数学基础(1)整除的概念
  • Linux 软件包管理器yum 自动化构建工具-make/makefile
  • 中秋佳节,数码好礼伴团圆:中秋节五大数码礼品指南
  • docker轻松集成延迟队列插件
  • NoSql数据库 Redis集群详解