Java——重载

一、重载(Overload)

1、重载是什么

方法重载(Method Overloading)是Java中实现多态的一种方式。它允许在同一个类中定义多个同名的方法,只要这些方法的参数列表不同。这些不同的参数列表可以通过不同的参数类型、参数数量或参数顺序来实现。

经常使用的 println 方法可已打印不同的数据类型就是重载实现的。

这里的不同的参数列表就实现了方法重载。

2、重载条件

重载的条件就是方法的方法名一样,参数列表不同。参数列表不同有多个情况:

1)参数类型不同

不同的参数类型可以实现方法重载。

void print(int a) {System.out.println("int: " + a);
}void print(double a) {System.out.println("double: " + a);
}

2)参数数量不同

不同的参数数量可以实现方法重载。

void print(int a) {System.out.println("int: " + a);
}void print(int a, int b) {System.out.println("int: " + a + ", int: " + b);
}

3)参数顺序不同

同样类型但顺序不同的参数也可以实现方法重载。

void print(int a, double b) {System.out.println("int: " + a + ", double: " + b);
}void print(double a, int b) {System.out.println("double: " + a + ", int: " + b);
}

3、方法重载的优点

  • 提高代码可读性:使用相同的方法名称,有助于统一语义,增强代码的可读性。
  • 灵活性和简洁性:可以根据不同的输入参数进行不同的处理,增强代码的灵活性和简洁性。

4、重载注意事项

返回类型不同不能作为重载依据:方法重载与返回类型无关,只看参数列表。

参数名称不同不能作为重载依据:方法重载与参数名称无关,只看参数列表。

方法修饰符无关:访问修饰符(如publicprivate等)不影响方法重载。

抛出异常无关:方法抛出的异常类型和数量不会影响重载。

二、重载示例

1、计算两个数据的和

下面的代码实现方法重载,一个方法是两个 int 参数,一个是两个 double 参数,两个方法方法名相同,实现重载,传入参数不同调用的方法不同。

public class Test {public static void main(String[] args) {Calculator myCalculator = new Calculator();int resOfInt = myCalculator.getSum(1, 2);//这里调用的是两个int参数的方法double resOfDouble = myCalculator.getSum(1.1, 1.2);//这里调用的是两个double参数的方法System.out.println("resOfInt = " + resOfInt);System.out.println("resOfDouble = " + resOfDouble);}
}class Calculator{//参数为两个intpublic int getSum(int a, int b) {return a + b;}//参数为两个doublepublic double getSum(double a, double b) {return a + b;}
}

运行结果:

可以发现传入的参数不同,调用的方法不同。

2、计算两个数据的最大值

public class Test {public static void main(String[] args) {Max max = new Max();int resOfInt = max.getMax(1, 2);double resOfDouble = max.getMax(1.1, 2.2);System.out.println("resOfInt = " + resOfInt);System.out.println("resOfDouble = " + resOfDouble);}
}class Max {//两个int型的参数public int getMax(int a, int b) {return a > b ? a : b;}//两个double型的参数public double getMax(double a, double b) {return a > b ? a : b;}
}

运行结果:

三、重载细节

1、参数兼容

public class Test {public static void main(String[] args) {Max max = new Max();double res = max.getMax(2.2, 3.2, 4);//最后一个参数传的是int型,//但依旧可以调用三个double类型的那个方法,//是因为int可以自动转换为double类型//这里最大值为4,因为自动转换为double类型,所以//下面会打印4.0System.out.println("res = " + res);}
}class Max {//两个int型的参数public int getMax(int a, int b) {return a > b ? a : b;}//两个double型的参数public double getMax(double a, double b) {return a > b ? a : b;}//三个double类型的参数,求三个数的最大值public double getMax(double a, double b, double c) {double max = a > b ? a : b;return max > c ? max : c;}
}

运行结果:

可以发现方法重载时,方法调用的基本原理还是适用的,调用时,传入的参数只要与参数列表兼容(同一类型或者可以自动转换),就可以调用。

2、最适配的方法

public class Test {public static void main(String[] args) {Max max = new Max();double res = max.getMax(2.2, 3.2, 4);//最后一个参数传的是int型,//会调用两个double,一个int的方法,调用最适配的方法System.out.println("res = " + res);}
}class Max {//两个int型的参数public int getMax(int a, int b) {return a > b ? a : b;}//两个double型的参数public double getMax(double a, double b) {return a > b ? a : b;}//三个double类型的参数,求三个数的最大值public double getMax(double a, double b, double c) {double max = a > b ? a : b;return max > c ? max : c;}//两个double类型的参数,一个int类型的参数public double getMax(double a, double b, int c) {System.out.println("调用的是:public double getMax(double a, double b, int c)");double max = a > b ? a : b;return max > c ? max : c;} 
}

运行结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/26479.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Web前端项目源码:深入解析与未来探索

Web前端项目源码:深入解析与未来探索 Web前端项目源码,如同隐藏在数字世界中的宝藏,蕴含着丰富的技术与智慧。它是构建现代网页应用的核心,也是实现用户交互和界面呈现的关键所在。本文将从四个方面、五个方面、六个方面和七个方…

构建全面框架 | 简化基因组+线粒体遗传进化联合分析

近日,凌恩生物客户河北农业大学、浙江大学及英国格林威治大学的研究团队合作,在《Insect Science》杂志上发表了题为“A comprehensive framework for the delimitation of species within the Bemisia tabaci cryptic complex, a global pest-species g…

Jira系统基本介绍

0 Preface/Foreword 1 使用人群 使用者包括以下: 企业管理层项目经理测试人员开发人员其他人员 2 Issue相关 2.1 缺陷类型 缺陷类型包括: 代码错误:常见的开发引起的错误设计缺陷:前期代码的框架搭建、界面设计等导致的缺陷…

GStreamer安装——iOS

安装iOS开发 支持从iOS6开始的所有版本 先决条件 iOS开发需要下载Xcode和iOSSDK。Xcode 可以在App Store或 这里 iOSSDK,如果它还没有包含在您的Xcode版本中, 可以从下载选项卡下的Xcode首选项菜单下载。 最低要求iOS版本为6.0。的最低要求版本 Xcode…

VUE做官方网站,兼容PC端和移动端的中英文切换显示,国际化库使用步骤详细教程

在使用Vue.js开发官方网站时,实现中英文的国际化显示,可以采用以下步骤和策略: 选择国际化库:Vue.js社区提供了多个国际化库,最常用的是vue-i18n。它是一个国际化插件,专为Vue.js应用程序设计。 安装vue-i…

字节流和字符流的区别

字节流和字符流的区别 字节流 **数据单位:**Byte为单位进行数据传输和处理。 **应用场景:**适用于所有类型的文件,包括视频、视频、音频等二进制文件,以及文本文件。 比如InputStrem和子类(FileInputStream&#x…

计算机网络知识点(三)

目录 一、简述TCP连接和关闭的状态转移 二、简述TCP慢启动 三、简述TCP如何保证有序 四、简述TCP常见的拥塞控制算法 五、简述TCP超时重传 一、简述TCP连接和关闭的状态转移 状态转移图 图中上半部分是TCP的三次握手过程的状态变迁,下半部分是TCP四次挥手过程的…

Web前端引言:探索数字世界的无限可能

Web前端引言:探索数字世界的无限可能 在数字化浪潮席卷全球的今天,Web前端技术以其独特的魅力引领着互联网的发展。作为连接用户与数字世界的桥梁,前端技术不仅关乎用户体验,更是产品竞争力的关键因素。本文将从四个方面、五个方…

Unity接入PS5手柄和Xbox手柄以及Android平台的(以及不同平台分析)

Unity接入PS5手柄和Xbox手柄以及Android平台的(以及不同平台分析) 介绍Unity手柄小知识PC端和编辑器上的摇杆事件和滑动事件PS5手柄Xbox手柄北通手柄 安卓环境下(安卓手机或者安卓模拟器)PS5手柄Xbox手柄北通手柄 总结 介绍 最近…

Springboot高校实训管理平台-计算机毕业设计源码01557

目 录 摘要 1 绪论 1.1 研究背景 1.2 研究意义 1.3论文结构与章节安排 2 高校实训管理平台系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据增加流程 2.2.2 数据修改流程 2.2.3 数据删除流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非功能性分析 2.4 系…

2006-2024年款别克君越维修手册和电路图资料更新

经过整理,2006-2024年款别克君越(含君越混动版)全系列已经更新至汽修帮手资料库内,覆盖市面上99%车型,包括维修手册、电路图、新车特征、车身钣金维修数据、全车拆装、扭力、发动机大修、发动机正时、保养、电路图、针…

MT7981B+MT7976C+MT7531A RF定频测试方法

1、从下面网址下载QA软件包,然后在WIN系统下安装QA环境。 https://download.csdn.net/download/zhouwu_linux/89428691?spm1001.2014.3001.5501 在WINDOWS 7系统下先安装WinPcap_4_1_3.exe。 2、搭建硬件环境,电脑先连接仪器,主板网络与电…

028、工具_Pipeline

Redis客户端执行一条命令分为如下四个过程: 1)发送命令 2)命令排队 3)命令执行 4)返回结果 其中1)+4)称为Round Trip Time(RTT,往返时间)。 Pipeline(它能将一组Redis命令进 行组装,通过一次RTT传输给Redis,再将这组Redis命令的执行结果按顺序返回给客户端,图3-…

Docker 镜像全军覆没后,如何给Ubuntu手动安装 docker 服务

Docker 镜像全军覆没后,如何给Ubuntu手动安装 docker 服务 下载地址下载自己需要的安装包使用下面的命令进行安装启动服务 最近由于某些未知原因,国内的docker镜像全部被停。刚好需要重新安装自己的笔记本为双系统,在原来的Windows下&#xf…

layui一个页面多个table显示时工具栏被下方的table遮挡

记录:layui一个页面多个table显示时工具栏被下方的table遮挡 css代码: [lay-idcurrentTableId] .layui-table-tool {position: relative;z-index: 9999;width: 100%;min-height: 50px;line-height: 30px;padding: 10px 15px;border-width: 0;border-bot…

服务架构的设计原则

墨菲定律与康威定律 在系统设计的时候,可以依据于墨菲定律 任何事情都没有表面上看起来那么简单所有的事情都会比你预计的时间长可能出错的事总会出错担心的某一个事情的发送,那么它就更有可能发生 在系统划分的时候,可以依据康威定律 系…

Excel文件转换为HTML文件

文章目录 前言安装python包python代码 前言 将一个Excel文件转换为HTML文件 安装python包 使用pandas和openpyxl库来实现这个功能 pip install pandas openpyxlpython代码 1、首先使用tkinter库中的filedialog模块弹出一个对话框来选择要转换的Excel文件 2、使用pandas库…

智能家居建材,打造未来家居生活

智能家居建材,正引领着家居行业的新潮流。它融合了先进的科技与人性化的设计,为我们打造了一个充满未来感的家居新体验。 想象一下,当你走进家门,智能门锁自动识别你的身份,轻轻一推即可进入。室内环境自动调节到最舒适…

elementPlus 图标不显示 属性模式不显示

问题&#xff1a; elementPlus 属性模式图标不显示 <el-input placeholder"请输入用户名" :suffix-icon"Avatar"> //这个图标不显示 之前在main.ts里全局引入了icons-vue。这里的script里也没引入。 解决&#xff1a; 在当前的script中重新引入a…

【蓝桥杯】C语言常见高级算法

&#x1f338;个人主页&#xff1a;Yang-ai-cao &#x1f4d5;系列专栏&#xff1a;蓝桥杯 C语言 &#x1f34d;博学而日参省乎己&#xff0c;知明而行无过矣 目录 &#x1f338;个人主页&#xff1a;Yang-ai-cao &#x1f4d5;系列专栏&#xff1a;蓝桥杯 C语言 &a…