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

重载和覆写有什么区别?

重载(Overload)和覆写(Override,也叫重写 )是面向对象编程中的重要概念,它们有以下区别:

 

定义

 

- 重载:在同一类中,允许存在多个方法名相同,但参数列表(参数个数、参数类型、参数顺序)不同的方法。返回值类型可以相同也可以不同 。例如在一个 MathUtils 类中:

 

public int add(int a, int b) {

    return a + b;

}

public double add(double a, double b) {

    return a + b;

}

 

 

这里两个 add 方法构成了重载关系。

 

- 覆写:发生在具有继承关系的子类和父类之间,子类重新实现父类中定义的虚函数(在C++、Java等语言中,需用特定关键字标识,如C++的 virtual  、Java的 @Override  ) ,要求方法名、参数列表、返回值类型都必须与父类被覆写方法相同,且子类方法不能比父类方法有更严格的访问控制权限。例如:

 

class Animal {

    public void speak() {

        System.out.println("Animal makes a sound");

    }

}

class Dog extends Animal {

    @Override

    public void speak() {

        System.out.println("Dog barks");

    }

}

 

 

 Dog 类中的 speak 方法覆写了 Animal 类中的 speak 方法。

 

发生范围

 

- 重载:发生在同一个类中,是同一类中多个同名方法之间的关系,属于水平关系 。

- 覆写:基于继承关系,发生在子类与父类之间,是垂直关系 。

 

多态性体现

 

- 重载:是静态多态(编译时多态)的体现 。在编译阶段,编译器根据调用方法时传入的实参类型、个数、顺序等,确定具体调用哪个重载方法。例如 MathUtils.add(1, 2) 和 MathUtils.add(1.0, 2.0)  ,编译器在编译时就能确定调用的是不同的 add 方法。

- 覆写:是动态多态(运行时多态)的体现 。程序运行时,根据对象实际所属的类型来决定调用哪个类的覆写方法。比如有 Animal animal = new Dog();  ,调用 animal.speak() 时,实际调用的是 Dog 类中覆写后的 speak 方法,这是在运行时根据 animal 实际指向的对象类型( Dog 类对象)来确定的。

 

访问权限

 

- 重载:对方法的访问权限没有特殊要求,各个重载方法的访问权限可以不同。

- 覆写:子类覆写的方法不能比父类被覆写方法有更严格的访问控制权限。比如父类方法是 public  ,子类覆写方法不能是 private 或 protected  ;若父类方法是 protected  ,子类覆写方法可以是 protected 或 public  。

 

方法数量

 

- 重载:一个方法可以有多个重载版本,即同一类中可以存在多个同名但参数列表不同的方法 。

- 覆写:针对父类中的一个方法,在子类中通常只有一个覆写版本 。

相关文章:

  • 开源项目实战学习之YOLO11:ultralytics-cfg-models-nas(十)
  • AVInputFormat 再分析
  • 1penl配置
  • 【LeetCode Hot100】二分查找篇
  • 【Go类库分享】mcp-go Go搭建MCP服务
  • 将Airtable导入NocoDB
  • Python functools.partial 函数深度解析与实战应用
  • 【C/C++】Linux的futex锁
  • 音视频开发技术总结报告
  • 小土堆pytorch数据加载概念以及实战
  • StandardCopyOption 还有哪些其他可用的常量?
  • 为什么要做异地监控组网?
  • 洛谷P6136 【模板】普通平衡树(数据加强版)
  • quantization-大模型权重量化简介
  • 【LLaMA-Factory实战】Web UI快速上手:可视化大模型微调全流程
  • Python 学习
  • react18基础速成
  • mysql安装,操作详解,适用于所有版本
  • 神经网络基础-从零开始搭建一个神经网络
  • Python实例题:Python获取房天下数据
  • 苏丹外交部:苏丹西部一城市约300名平民遭杀害
  • 艺术开卷|韩羽读齐白石:妙在似与不似之间
  • 商务部新闻发言人就中美经贸对话磋商情况答记者问
  • 党政机关停车场免费、食堂开放,多地“五一”游客服务暖心周到
  • 国际著名学者Charles M. Lieber全职受聘清华深圳国际研究生院
  • 美乌签署协议建立美乌重建投资基金