参考链接: 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的方法重载和方法覆盖相关推荐

  1. Java中方法重载和方法重写的区别

    文章目录 1 Java中方法重载和方法重写的区别 1 Java中方法重载和方法重写的区别 主要区别如下: 方法重载: 在同一个类中 方法名相同 参数个数.顺序.类型不同 返回值类型.访问修饰符任意 方 ...

  2. JAVA SE、EE、ME,JRE、JDK,基本数据类型,访问修饰符、函数、封装的概念、UML类图、构造方法、this关键字、static关键字、方法重载、方法重写、包(packahe)

    运行第一个JAVA程序: 这里使用的开发环境是eclipse,新建一个java工程,然后可以看到src这个是存放java代码的地方,然后在src文件右击新建一个class(类),然后可以看到下图,同样 ...

  3. java关于重写正确,在Java中,以下关于方法重载和方法重写描述正确的是( )

    在Java中,以下关于方法重载和方法重写描述正确的是( ) 答:方法重写的返回值类型必须相同或相容.(或是其子类) 对乙酰氨基酚临床用途是抗炎抗风湿作用 答:错 观念艺术是哲学的反思,传统的理论可以对 ...

  4. JAVA 方法重载和方法覆写的区别(有代码)

    方法重载(override)与方法覆写(overload)的区别 1.方法名相同,但是各自的参数不同,叫做方法重载.方法重载的返回值都相同.其功能类的方法都使用同一名字. 举一个简单的方法重载的例子, ...

  5. 教妹学Java:傻傻分不清,方法重载和方法重写

    方法重载和方法重写 01.开篇 入冬的夜,总是来得特别的早.我静静地站在阳台,目光所及之处,不过是若隐若现的钢筋混凝土,还有那毫无情调的灯光. "哥,别站在那发呆了.今天学啥啊,七点半我就要 ...

  6. 【JVM系列3】方法重载和方法重写原理分析,看完这篇终于彻底搞懂了

    深入分析Java虚拟机中方法执行流程及方法重载和方法重写原理 前言 思考 栈帧 局部变量表(Local Variables) 操作数栈(Operand Stacks) 动态连接(Dynamic Lin ...

  7. 语法基础(三. 类,属性,方法,方法重载,方法重写,构造方法,访问修饰符)

    语法基础(三. 类,属性,方法,方法重载,方法重写,构造方法,访问修饰符) (如有错误,欢迎指正,感谢!) 类 类是面向对象的程序设计中的概念,实现信息的封装 概念: 类就是拥有相等行为和相同的属性的 ...

  8. 令人发指的关于方法重载和方法重写的一些理解(多态)

    令人发指的关于方法重载和方法重写的一些理解 文章目录 **令人发指的关于方法重载和方法重写的一些理解** **方法重载的基础** **子类的方法重载** **重载升级只重写** **顺藤摸瓜之干掉&q ...

  9. 方法重载和方法重写的区别和作用

    一.方法重载(Overload) 背景: 有时我们要用到一个函数同时兼容多种类型或者参数的情况,这时我们就要用到方法重载. 含义: 一个方法的逻辑是一样的,但是考虑到要适用不同的场景(参数个数不同,参 ...

最新文章

  1. springcloud基于ribbon的canary路由方案
  2. xmemcached发布1.3.4
  3. “30位新生代数字经济人才”选拔开启!@乌镇·世界互联网大会
  4. htm tt cite em u
  5. 【Python教程】装饰器的使用及固定模式
  6. CodeForces - 1203F1 Complete the Projects (easy version)(贪心)
  7. Node.js 入门详解(四)
  8. MongoDB常用使用场景介绍
  9. 基于JAVA+SpringBoot+Mybatis+MYSQL的校园新闻管理系统
  10. LSD-SLAM笔记之DepthMap
  11. 帆软报表使用心得(转)
  12. 如何对自动驾驶技术进行全面检验?
  13. 计算机流体力学:CFD
  14. 汽车如何打蜡 汽车打蜡有什么要注意的地方
  15. c++小游戏——打飞机
  16. 《视觉SLAM 十四讲》第五讲 实践:拼接点云-编译遇到的terminate called after throwing an instance of 'pcl::IOException问题及解决方法
  17. Exploratory Social Network Analysis with Pajek(第三版)11
  18. STM32F407之电阻式触摸屏
  19. 智能制造的实现,少不了APS排产系统
  20. HTML网页设计:电影网站设计——影视(8页) HTML+CSS+JavaScript

热门文章

  1. 【CSP201312-2】ISBN号码,字符串,简单模拟
  2. 【语法】一些奇怪的语义错
  3. NYOJ101 - 两点距离
  4. php smarty if,php Smarty中if,elseif,else用法详解
  5. Python入门--列表生成式
  6. 集训8.19最短路径讲解
  7. [leetcode]1185. 一周中的第几天
  8. C#基础4:函数+ref和out参数
  9. [Python] zip() 函数
  10. Docker容器内不能联网的6种解决方案