目录

1. 什么是重载

2. 什么是重写

3. 二者的区别


1. 什么是重载

重载(overload),它是指我们可以定义一些名称相同的方法,通过定义不同的输入参数来区分这些方法,然后再调用时,VM就会根据不同的参数样式,来选择合适的方法执行。

重载最常见于java的编写过程中,是面向对象程序设计(Object Oriented Programming)的特性之一。

重载的规则:

  • 方法名相同;
  • 方法的参数不同(包括参数个数或者参数类型);
  • 方法的返回值类型不影响重载。

代码示例:

   public static void main(String[] args) {int a = 10;int b = 20;int ret = add(a, b);System.out.println("ret = " + ret);double a2 = 10.5;double b2 = 20.5;double ret2 = add(a2, b2);System.out.println("ret2 = " + ret2);double a3 = 10.5;double b3 = 10.5;double c3 = 20.5;double ret3 = add(a3, b3, c3);System.out.println("ret3 = " + ret3);}public static int add(int x, int y) {return x + y;}public static double add(double x, double y) {return x + y;}public static double add(double x, double y, double z) {return x + y + z;}

2. 什么是重写

在 Java 中子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。方法重写又称方法覆写,方法覆盖。

重写的规则:

  • 重写的方法方法名、参数列表必须一致,方法返回值也要一致(除了向上转型);
  • 重写方法时子类的方法的访问权限不能低于父类的方法访问权限;
  • 普通方法可以重写,但是 static 修饰的静态方法不能重写;
  • final 修饰的方法不能被重写。

访问权限由大到小:public > protected > default > private

代码示例:

public class Animal {public void eat(String food) {System.out.printf("动物会吃");}
}public class Bird extends Animal {@Overridepublic void eat(String food) {super.eat(food);}public static void main(String[] args) {Bird bird = new Bird();bird.eat("虫子");}
}

ps:推荐在代码中进行重写方法时显式加上 @Override 注解 。

运行结果:

3. 二者的区别

  • 重载是一个类中的方法进行重载;而重写和继承有关,是子类重写父类中的方法。
  • 重载只要求方法名称相同,参数类型及个数不同;重写要求方法名称,参数类型及个数,返回值类型都要相同。
  • 重载对于方法的访问权限没有要求,而重写则要求子类重写的方法不能低于父类被重写方法的访问权限。

重载和重写的区别总结相关推荐

  1. C++中重载与重写函数区别及虚函数(转载)

    C++中重载与重写函数区别及虚函数 C++中的虚函数(virtual function) 1.简介 虚函数是C++中用于实现多态(polymorphism)的机制.核心理念就是通过基类访问派生类定义的 ...

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

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

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

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

  4. C#重载和重写的区别

    C#重载和重写的区别  重载就是在同一个类中,方法名相同,参数列表不同.参数列表不同包括:参数的个数不同,参数类型不同等. 重载特征: I.方法名必须相同 II.参数列表必须不相同,与参数列表的顺序无 ...

  5. 继承、多态,重载、重写的区别与总结

    什么是多态?它的实现机制是什么呢?重载和重写的区别在那里?这就是这一次我们要回顾的四个十分重要的概念:继承.多态.重载和重写. 继承(inheritance) 简单的说,继承就是在一个现有类型的基础上 ...

  6. JAVA中重写和实现的区别_Java中重载和重写的区别

    Java中重载和重写的区别 1.1重载是什么 Overloading   方法重载是让类以统一的方式处理不同类型数据的一种手段,多个同名函数同时存在,具有不同的参数个数/类型 1.2为什么用重载 重载 ...

  7. 重载和重写的区别有哪些?

    重载和重写的区别有以下几点: 一.定义上的区别: 1.重载是指不同的函数使用相同的函数名,但是函数的参数个数或类型不同.调用的时候根据函数的参数来区别不同的函数. 2.覆盖(也叫重写)是指在派生类中重 ...

  8. C#重载与重写的区别

    前言:在之前的博文中,我总结过重载与重写的区别与用法,本博文算是一个系统的概述与总结. 文章目录 一.重载与重写的区别 二.重载与重写的特征 三.重载与重写的对比 一.重载与重写的区别 重载必须在同一 ...

  9. java中重载与重写的区别

    最近了解一下重载和重写  一.重载(Overloading) (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段.多个同名函数同时存在,具有不同的参数个数/类型. 重载Overloading ...

  10. 二十三、Java类中重载和重写的区别

    @Author:Runsen @Date:2020/5/31 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘课严重,专业排 ...

最新文章

  1. HTML, CSS, Javascript, jQuery之间的关系
  2. 20140417--Linux课程讲解目录索引
  3. MLCC噪声啸叫及对策
  4. 意想不到的有趣linux命令
  5. java中主函数抛出的异常怎么解决_java – 从递归函数中抛出异常
  6. JDK9新特性实战:简化流关闭新姿势
  7. ls实现列文件按时间排序
  8. php qmqp 没有方法,CentOS7 php 安装 amqp扩展
  9. 饶毅教授对非升即走的思考
  10. 数据库是.frm,.myd,myi备份如何导入mysql (转)
  11. 自动划分-------训练集+验证集+测试集(code,自己设置比例)
  12. 【基于 RT-Thread Studio的CPK-RA6M4 开发板环境搭建】
  13. 模板引擎 - Thymeleaf
  14. linux 命令行 双引号,每天一个Linux命令之shell单引号和双引号的经典解释
  15. 飞睿科技微波雷达感应方案,多普勒雷达效应技术应用
  16. ABAP对excel的操作(合并单元格,设置边框)
  17. 实现网上购物系统的后台管理(增、删、改、查图书)。
  18. 架构之——umi框架与dva的使用
  19. 中国FW贝尔探头市场现状研究分析与发展前景预测报告(2022)
  20. 【宝藏】GitHub黑科技的开源项目(有趣高质量)

热门文章

  1. Unity 如何设计UI管理系统
  2. Scala语言编程基础
  3. 范数计算(一范数、二范数、无穷范数)
  4. vb 读取oracle中的表格数据,如何将数据库信息读取导出excel表格中-VB 从SQL数据库中把数据导出到Excel表格中,怎么写?...
  5. 12306招标回溯:带病仓促上线 易程科技出局
  6. 从搜索引擎到人工智能看百度科技创新之路
  7. 连接数据库出错:java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/
  8. Emgucv FloodFill 在c#调用方法,把默认黑底图变白色
  9. 2019年新的UI设计现状及发展趋势解析
  10. IM即时通讯哇呼--解析