重载和重写的区别总结
目录
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. 二者的区别
- 重载是一个类中的方法进行重载;而重写和继承有关,是子类重写父类中的方法。
- 重载只要求方法名称相同,参数类型及个数不同;重写要求方法名称,参数类型及个数,返回值类型都要相同。
- 重载对于方法的访问权限没有要求,而重写则要求子类重写的方法不能低于父类被重写方法的访问权限。
重载和重写的区别总结相关推荐
- C++中重载与重写函数区别及虚函数(转载)
C++中重载与重写函数区别及虚函数 C++中的虚函数(virtual function) 1.简介 虚函数是C++中用于实现多态(polymorphism)的机制.核心理念就是通过基类访问派生类定义的 ...
- java 可以重载等于号码_Java面试之Java基础4——重载与重写的区别
目录 重载与重写的概念 重载与重写的区别 重载与重写的总结 构造器是否能被重写override 为什么函数不能根据返回类型来区分重载 重载与重写的概念 重载:同样一个方法可以根据输入参数列表的不同,做 ...
- 开课吧-Java常见面试题:重载和重写的区别?
重载和重写的区别? 方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性. 重载发生在一个类中,同名的方法如果有不同的参数列表(类型不同.个数不同.顺序 ...
- C#重载和重写的区别
C#重载和重写的区别 重载就是在同一个类中,方法名相同,参数列表不同.参数列表不同包括:参数的个数不同,参数类型不同等. 重载特征: I.方法名必须相同 II.参数列表必须不相同,与参数列表的顺序无 ...
- 继承、多态,重载、重写的区别与总结
什么是多态?它的实现机制是什么呢?重载和重写的区别在那里?这就是这一次我们要回顾的四个十分重要的概念:继承.多态.重载和重写. 继承(inheritance) 简单的说,继承就是在一个现有类型的基础上 ...
- JAVA中重写和实现的区别_Java中重载和重写的区别
Java中重载和重写的区别 1.1重载是什么 Overloading 方法重载是让类以统一的方式处理不同类型数据的一种手段,多个同名函数同时存在,具有不同的参数个数/类型 1.2为什么用重载 重载 ...
- 重载和重写的区别有哪些?
重载和重写的区别有以下几点: 一.定义上的区别: 1.重载是指不同的函数使用相同的函数名,但是函数的参数个数或类型不同.调用的时候根据函数的参数来区别不同的函数. 2.覆盖(也叫重写)是指在派生类中重 ...
- C#重载与重写的区别
前言:在之前的博文中,我总结过重载与重写的区别与用法,本博文算是一个系统的概述与总结. 文章目录 一.重载与重写的区别 二.重载与重写的特征 三.重载与重写的对比 一.重载与重写的区别 重载必须在同一 ...
- java中重载与重写的区别
最近了解一下重载和重写 一.重载(Overloading) (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段.多个同名函数同时存在,具有不同的参数个数/类型. 重载Overloading ...
- 二十三、Java类中重载和重写的区别
@Author:Runsen @Date:2020/5/31 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘课严重,专业排 ...
最新文章
- HTML, CSS, Javascript, jQuery之间的关系
- 20140417--Linux课程讲解目录索引
- MLCC噪声啸叫及对策
- 意想不到的有趣linux命令
- java中主函数抛出的异常怎么解决_java – 从递归函数中抛出异常
- JDK9新特性实战:简化流关闭新姿势
- ls实现列文件按时间排序
- php qmqp 没有方法,CentOS7 php 安装 amqp扩展
- 饶毅教授对非升即走的思考
- 数据库是.frm,.myd,myi备份如何导入mysql (转)
- 自动划分-------训练集+验证集+测试集(code,自己设置比例)
- 【基于 RT-Thread Studio的CPK-RA6M4 开发板环境搭建】
- 模板引擎 - Thymeleaf
- linux 命令行 双引号,每天一个Linux命令之shell单引号和双引号的经典解释
- 飞睿科技微波雷达感应方案,多普勒雷达效应技术应用
- ABAP对excel的操作(合并单元格,设置边框)
- 实现网上购物系统的后台管理(增、删、改、查图书)。
- 架构之——umi框架与dva的使用
- 中国FW贝尔探头市场现状研究分析与发展前景预测报告(2022)
- 【宝藏】GitHub黑科技的开源项目(有趣高质量)
热门文章
- Unity 如何设计UI管理系统
- Scala语言编程基础
- 范数计算(一范数、二范数、无穷范数)
- vb 读取oracle中的表格数据,如何将数据库信息读取导出excel表格中-VB 从SQL数据库中把数据导出到Excel表格中,怎么写?...
- 12306招标回溯:带病仓促上线 易程科技出局
- 从搜索引擎到人工智能看百度科技创新之路
- 连接数据库出错:java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/
- Emgucv FloodFill 在c#调用方法,把默认黑底图变白色
- 2019年新的UI设计现状及发展趋势解析
- IM即时通讯哇呼--解析