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,一经查实,立即删除!

相关文章

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

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

GStreamer安装——iOS

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

计算机网络知识点(三)

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

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-…

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…

服务架构的设计原则

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

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

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

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

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

【学习笔记】Kali

纯个人总结&#xff0c;有什么不对的地方欢迎指正。 笔记根据个人学习进度持续更新… 一、 认识Kali 基础了解 Kali是一套基于Debian发行版的一款操作系统。&#xff08;这里讲一个误区&#xff0c;我以前一直以为kali就属于deepin下的操作系统&#xff0c;但是我知道deepin是…

HTML静态网页成品作业(HTML+CSS+JS)—— 美食企业曹氏鸭脖介绍网页(4个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;使用Javacsript代码实现 图片轮播切换&#xff0c;共有4个页面。 二、…

使用pyqt对yolov5进行简答部署

YOLOv5是一种高效的实时目标检测算法&#xff0c;广泛应用于各类计算机视觉任务中。为了实现便捷的图形用户界面&#xff08;GUI&#xff09;&#xff0c;我们采用了PyQt框架。PyQt是一个Python绑定的Qt库&#xff0c;用于创建跨平台的应用程序。 在本研究中&#xff0c;我们首…

「React」RSC 服务端组件

前言 RSC&#xff08;React Server Components&#xff09;是React框架的一个新特性&#xff0c;它允许开发者编写只在服务器端渲染的组件。与传统的服务器端渲染&#xff08;SSR&#xff09;不同&#xff0c;RSC的目标是提升性能和用户体验&#xff0c;同时减少客户端加载的J…

【每日一练】day3

✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天开心哦&#xff01;✨✨ &#x1f388;&#x1f388;作者主页&#xff1a; &#x1f388;丠丠64-CSDN博客&#x1f388; ✨✨ 帅哥美女们&#xff0c;我们共同加油&#xff01;一起…

OLED柔性屏的显示效果如何

OLED柔性屏的显示效果非常出色&#xff0c;具有多方面的优势。以下是关于OLED柔性屏显示效果的详细分析&#xff1a; 色彩表现&#xff1a;OLED柔性屏的每个像素都可以独立发光&#xff0c;因此色彩准确性极高。黑色呈现得非常深邃&#xff0c;而亮部则展现出鲜明而生动的细节。…

vue3+electron搭建桌面软件

vue3electron开发桌面软件 最近有个小项目, 客户希望像打开 网易云音乐 那么简单的运行起来系统. 前端用 Vue 会比较快一些, 因此决定使用 electron 结合 Vue3 的方式来完成该项目. 然而, 在实施过程中发现没有完整的博客能够记录从创建到打包的流程, 摸索一番之后, 随即梳理…

事件、方法实现 on_radioGreen_clicked ,on_chkBoxUnder_clicked,Qfont,QPalette

Vertical Layout 、Horizontal Layout 实验窗体自适应布局 接上篇界面布局&#xff0c; 实验checkBox、radioBox 的事件槽&#xff0c; 使用Qfont组件变更纯文本框QPlainTextEdit中字体的下划线、加粗、斜体效果 使用调色板组QPalette变更纯文本框QPlainTextEdit中文本颜色 UI…