[转载] 用大白话解释Java的方法重载和方法覆盖
参考链接: Java中方法重载的不同方法
本文原创首发CSDN,本文链接https://blog.csdn.net/qq_41464123/article/details/107656852 ,作者博客https://blog.csdn.net/qq_41464123 ,转载请带上本链接,谢谢配合。
目录
一、什么是Java方法重载
二、最简单的例子 —— a + b
三、综合应用 —— 多功能计算器
四、方法重载和方法覆盖的异同
一、什么是Java方法重载
在同一个类中有多个方法名一致的方法,但是这些方法参数列表不同,代码也不一样,那么我们就叫做方法重载
在Java中,方法重载也是Java多态性的一种实现
Java支持动态根据实参和形参匹配度来确定到底要使用哪一个方法
比如我们Java常用的输出语句 System.out.print(); 你可以传入不同数据类型的值,它都可以进行输出操作
二、最简单的例子 —— a + b
先来一个最简单的例子 —— a + b
public class Main {
public static int add(int x, int y) {
return x + y;
}
public static void main(String[] args) {
System.out.println(add(1, 2));
}
}
结果可想而知,输出就是 —— 3
那么如果再写一个重名的方法呢?
IDE就报错了,因为被系统认为是完全一样的方法,哪怕返回类型不一致也不行
在Java中,如果多个方法的方法名相同,则必须保证参数类型不完全一致
就像下面这样,参数类型分别是 int 和 double
public class Main {
public static int add(int x, int y) {
return x + y;
}
public static int add(double x, double y) {
return (int)(x + y);
}
public static void main(String[] args) {
System.out.println(add(1, 2));
System.out.println(add(1.9, 2.5));
}
}
这两个方法的形参列表不一致,就可以实现方法重载了
本文原创首发CSDN,本文链接https://blog.csdn.net/qq_41464123/article/details/107656852 ,作者博客https://blog.csdn.net/qq_41464123 ,转载请带上本链接,谢谢配合。
三、综合应用 —— 多功能计算器
首先编写一个计算器类—— Calculation,实现add()方法的五中不同重载
public class Calculation {
public int add(int x,int y) {
return x + y;
}
public double add (double x, double y) {
return x + y;
}
public float add (float x, float y) {
return x + y;
}
public String add (String x, String y) {
return x + y;
}
public long add (long x, long y) {
return x + y;
}
}
接着在测试方法中,分别调用这五种重载
public class Main {
public static void main(String[] args) {
Calculation c = new Calculation();
System.out.println("Int add = " +c.add(1,2));
System.out.println("Float add = " +c.add(360.2f,159.8f));
System.out.println("Double add = " +c.add(632.84,681.68));
System.out.println("Long add = " +c.add(326866l,987654l));
System.out.println("String add = " + c.add("hello","zwz"));
}
}
我们可以看到,对于add()方法,可以传入不同数据类型的参数,已实现Java方法重载
四、方法重载和方法覆盖的异同
Java方法覆盖指的是在继承的父类和子类中,子类对父类的方法进行了重写,即在不同的类中实现
比如有一个计算机子类 —— MyCalculation,继承于刚刚的 Calculation 类
public class MyCalculation extends Calculation{
public int add(int x,int y) {
return x + y + 1;
}
}
我们在测试方法中实例化一个 MyCalculation 对象,发现依然可以调用父类 Calculation 的重载方法
但是在调用子类 MyCalculation 重写的add(int , int)方法时,可以发现子类的方法覆盖掉了父类
public class Main {
public static void main(String[] args) {
MyCalculation myCalculation = new MyCalculation();
System.out.println(myCalculation.add(1, 2));
}
}
即结果没有遵循父类 Calculation 的 add(int,int),而是遵循了子类 MyCalculation 的 add(int,int)
方法覆盖要求子类的方法申明必须和父类的完全一致,但方法重载则要求参数列表的形参不一样。
[转载] 用大白话解释Java的方法重载和方法覆盖相关推荐
- Java中方法重载和方法重写的区别
文章目录 1 Java中方法重载和方法重写的区别 1 Java中方法重载和方法重写的区别 主要区别如下: 方法重载: 在同一个类中 方法名相同 参数个数.顺序.类型不同 返回值类型.访问修饰符任意 方 ...
- JAVA SE、EE、ME,JRE、JDK,基本数据类型,访问修饰符、函数、封装的概念、UML类图、构造方法、this关键字、static关键字、方法重载、方法重写、包(packahe)
运行第一个JAVA程序: 这里使用的开发环境是eclipse,新建一个java工程,然后可以看到src这个是存放java代码的地方,然后在src文件右击新建一个class(类),然后可以看到下图,同样 ...
- java关于重写正确,在Java中,以下关于方法重载和方法重写描述正确的是( )
在Java中,以下关于方法重载和方法重写描述正确的是( ) 答:方法重写的返回值类型必须相同或相容.(或是其子类) 对乙酰氨基酚临床用途是抗炎抗风湿作用 答:错 观念艺术是哲学的反思,传统的理论可以对 ...
- JAVA 方法重载和方法覆写的区别(有代码)
方法重载(override)与方法覆写(overload)的区别 1.方法名相同,但是各自的参数不同,叫做方法重载.方法重载的返回值都相同.其功能类的方法都使用同一名字. 举一个简单的方法重载的例子, ...
- 教妹学Java:傻傻分不清,方法重载和方法重写
方法重载和方法重写 01.开篇 入冬的夜,总是来得特别的早.我静静地站在阳台,目光所及之处,不过是若隐若现的钢筋混凝土,还有那毫无情调的灯光. "哥,别站在那发呆了.今天学啥啊,七点半我就要 ...
- 【JVM系列3】方法重载和方法重写原理分析,看完这篇终于彻底搞懂了
深入分析Java虚拟机中方法执行流程及方法重载和方法重写原理 前言 思考 栈帧 局部变量表(Local Variables) 操作数栈(Operand Stacks) 动态连接(Dynamic Lin ...
- 语法基础(三. 类,属性,方法,方法重载,方法重写,构造方法,访问修饰符)
语法基础(三. 类,属性,方法,方法重载,方法重写,构造方法,访问修饰符) (如有错误,欢迎指正,感谢!) 类 类是面向对象的程序设计中的概念,实现信息的封装 概念: 类就是拥有相等行为和相同的属性的 ...
- 令人发指的关于方法重载和方法重写的一些理解(多态)
令人发指的关于方法重载和方法重写的一些理解 文章目录 **令人发指的关于方法重载和方法重写的一些理解** **方法重载的基础** **子类的方法重载** **重载升级只重写** **顺藤摸瓜之干掉&q ...
- 方法重载和方法重写的区别和作用
一.方法重载(Overload) 背景: 有时我们要用到一个函数同时兼容多种类型或者参数的情况,这时我们就要用到方法重载. 含义: 一个方法的逻辑是一样的,但是考虑到要适用不同的场景(参数个数不同,参 ...
最新文章
- springcloud基于ribbon的canary路由方案
- xmemcached发布1.3.4
- “30位新生代数字经济人才”选拔开启!@乌镇·世界互联网大会
- htm tt cite em u
- 【Python教程】装饰器的使用及固定模式
- CodeForces - 1203F1 Complete the Projects (easy version)(贪心)
- Node.js 入门详解(四)
- MongoDB常用使用场景介绍
- 基于JAVA+SpringBoot+Mybatis+MYSQL的校园新闻管理系统
- LSD-SLAM笔记之DepthMap
- 帆软报表使用心得(转)
- 如何对自动驾驶技术进行全面检验?
- 计算机流体力学:CFD
- 汽车如何打蜡 汽车打蜡有什么要注意的地方
- c++小游戏——打飞机
- 《视觉SLAM 十四讲》第五讲 实践:拼接点云-编译遇到的terminate called after throwing an instance of 'pcl::IOException问题及解决方法
- Exploratory Social Network Analysis with Pajek(第三版)11
- STM32F407之电阻式触摸屏
- 智能制造的实现,少不了APS排产系统
- HTML网页设计:电影网站设计——影视(8页) HTML+CSS+JavaScript