Java方法的重载
Java方法的重载
- 前言
- 一、为什么要有重载
- 代码示例
- 问题
- 代码示例
- 二、重载的使用
- 代码示例
- 三、重载的规则
- 针对同一个类
- 代码示例
前言
推荐一个网站给想要了解或者学习人工智能知识的读者,这个网站里内容讲解通俗易懂且风趣幽默,对我帮助很大。我想与大家分享这个宝藏网站,请点击下方链接查看。
https://www.captainbed.cn/f1
Java方法的重载是指同一个类中可以有多个同名方法,但这些方法的参数列表(参数类型、参数个数或参数顺序)必须不同,以便在调用时能够根据参数列表区分具体调用哪个方法。
有些时候我们需要用一个函数同时兼容多种参数的情况, 我们就可以使用到方法重载.
一、为什么要有重载
Java中的重载(overloading)指的是可以在同一个类中定义多个方法,这些方法具有相同的名称但参数类型、参数个数或参数顺序不同。重载的目的是为了提高代码的可读性、可维护性和灵活性。
以下是Java中使用重载的几个主要原因:
-
方便使用:重载可以让程序员使用同一个方法名来执行不同的操作,这样可以减少方法名的数量,使代码更简洁清晰。例如,可以定义一个名为print的方法,使其能够接受不同类型的参数并打印出对应的结果。
-
灵活性:重载允许在不改变方法名称的情况下,根据需要适应不同的参数类型或参数个数。这样可以提供更多的使用选项,并满足不同场景下的需求。
-
可读性:重载方法可以使代码更易读。通过方法名的相似性和参数的类型或个数来区分方法,可以使代码更加易于理解和调用。
-
代码复用:使用重载可以在不同的方法中复用相似的代码逻辑。当多个方法执行类似的操作时,可以将这些共享的代码放到一个方法中,并通过重载来处理不同的参数类型。
需要注意的是,重载仅仅根据方法的参数类型、个数、顺序来判断调用哪个方法,与方法的返回类型无关。因此,如果仅通过返回类型的不同来区分方法,是无法实现重载的。
代码示例
class Main {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);}public static int add(int x, int y) {return x + y;}
}

问题
由于参数类型不匹配, 所以不能直接使用现有的 add 方法.
那么是不是应该创建这样的代码呢?
代码示例
class Main {public static void main(String[] args) {int a = 10;int b = 20;int ret = addInt(a, b);System.out.println("ret = " + ret);double a2 = 10.5;double b2 = 20.5;double ret2 = addDouble(a2, b2);System.out.println("ret2 = " + ret2);}public static int addInt(int x, int y) {return x + y;}public static double addDouble(double x, double y) {return x + y;}
}

这样的写法是对的(例如 Go 语言就是这么做的), 但是 Java 认为 addInt 这样的名字不友好, 不如直接就叫 add
二、重载的使用
代码示例
class Main {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;}
}

方法的名字都叫 add. 但是有的 add 是计算 int 相加, 有的是 double 相加; 有的计算两个数字相加, 有的是计算三个数字相加.
同一个方法名字, 提供不同版本的实现, 称为 方法重载
三、重载的规则
在Java中,方法重载(Method Overloading)指的是在同一个类中可以定义多个方法,这些方法具有相同的名称但参数类型、参数个数或参数顺序不同。通过重载方法,可以在同一个类中为相似的操作提供多个不同的方式。
以下是在Java中使用方法重载的一些常见用法:
-
参数类型不同:通过参数的数据类型来区分方法。例如,可以定义一个名为
sum的方法,一个接受两个整型参数,另一个接受两个浮点型参数。这样可以在不同情况下调用不同的方法。 -
参数个数不同:通过参数的个数来区分方法。例如,可以定义一个名为
max的方法,一个接受两个整型参数,另一个接受三个整型参数。这样可以根据需要选择不同数量的参数进行计算。 -
参数顺序不同:通过参数的顺序来区分方法。例如,可以定义一个名为
swap的方法,一个接受两个整型参数,另一个接受一个整型参数和一个字符参数。这样可以根据参数的顺序来决定调用哪个方法。
需要注意的是,方法重载仅仅是通过参数的不同来区分方法,与方法的返回类型无关。因此,方法重载不允许两个方法只有返回类型不同,否则会编译错误。
针对同一个类
在使用方法重载时,需要遵循以下规则:
- 方法名必须相同。
- 参数列表必须不同(类型、个数、顺序)。
- 返回类型可以相同也可以不同,但不能仅根据返回类型来区分方法。
- 方法的修饰符可以不同。
- 方法的异常声明可以不同。
通过合理使用方法重载,可以提高代码的可读性、可维护性和灵活性,使程序更加具有弹性和适应性。
代码示例
class Main {public static void main(String[] args) {int a = 10;int b = 20;int ret = add(a, b);System.out.println("ret = " + ret);}public static int add(int x, int y) {return x + y;}public static double add(int x, int y) {return x + y;}
}

当两个方法的名字相同, 参数也相同, 但是返回值不同的时候, 不构成重载.
相关文章:
Java方法的重载
Java方法的重载 前言一、为什么要有重载代码示例问题 代码示例 二、重载的使用代码示例 三、重载的规则针对同一个类代码示例 前言 推荐一个网站给想要了解或者学习人工智能知识的读者,这个网站里内容讲解通俗易懂且风趣幽默,对我帮助很大。我想与大家分…...
RabbitMQ 消息队列安装及入门
市面常见消息队列中间件对比 技术名称吞吐量 /IO/并发时效性(类似延迟)消息到达时间可用性可靠性优势应用场景activemq万级高高高简单易学中小型企业、项目rabbitmq万级极高(微秒)高极高生态好(基本什么语言都支持&am…...
K8S认证|CKA题库+答案| 14. 排查故障节点
14、排查集群中的故障节点 CKA v1.29.0模拟系统免费下载试用: 百度网盘:https://pan.baidu.com/s/1vVR_AK6MVK2Jrz0n0R2GoQ?pwdwbki 题目: 您必须在以下Cluster/Node上完成此考题: Cluster …...
Linux:网络管理命令之ss
一、ss命令介绍 Linux下的ss命令是Socket Statistics的缩写,也被称为IPC(Inter-Process Communication)套接字统计。这是一个强大的网络管理命令,主要用于获取系统中socket的统计信息,可以帮助系统管理员诊断和排查网络…...
数据结构-队列(带图详解)
目录 队列的概念 画图理解队列 代码图理解 代码展示(注意这个队列是单链表的结构实现) Queue.h(队列结构) Queue.c(函数/API实现) main.c(测试文件) 队列的概念 队列(Queue)是一种基础的数据结构,它遵循先进先出(First In …...
python文件名通常以什么结尾
python文件后缀一般有两个,分别是.py和.pyw。视窗用 python.exe 运行 .py,用 pythonw.exe 运行 .pyw 。 这纯粹是因为安装视窗版Python时,扩展名 .py 自动被登记为用 python.exe 运行的文件,而 .pyw 则被登记为用 pythonw.exe 运…...
前端javascript 中 JSON.parse() 的作用
1.解析 JSON 字符串 JSON.parse({"name": "tom"}) // {"name": "tom"} JSON.parse([1,2,3]) // [1,2,3] 2.转换成数字 JSON.parse(12) // 12 3.转换成布尔值 JSON.parse(false) // false...
【Linux学习】进程基础API
下面是有关进程基础API的相关介绍,希望对你有所帮助! 小海编程心语录-CSDN博客 目录 1. 僵尸进程与孤儿进程 1.1 孤儿进程 1.2 僵尸进程 2. 监视子进程 2.1 wait() 2.2 waitpid() 3. 执行新程序 exec族函数 4. 守护进程 1. 僵尸进程与孤儿进程…...
音视频及H264/H256编码相关原理
一、音视频封装格式原理: 我们播放的视频文件一般都是用一种封装格式封装起来的,封装格式的作用是什么呢?一般视频文件里不光有视频,还有音频,封装格式的作用就是把视频和音频打包起来。 所以我们先要解封装格式&#…...
查看cpu进程数
import multiprocessing from multiprocessing import Pool# 导入 Pool 允许你创建一个进程池 # 进程池是一组工作进程,它们可以并行地执行多个任务# multiprocessing.cpu_count(): 返回当前机器上的CPU核心数 sum_cpu multiprocessing.cpu_count()use_cpu max(1,…...
MySQL优化篇
文章目录 库表结构优化1.规范和反规范化2.数据类型选择3.主键类型选择 索引优化聚簇索引和辅助索引(一切的起源)复合索引 查询优化 库表结构优化 1.规范和反规范化 表设计之间性能和数据完整性,耦合和解耦合之间的取舍。 进而考虑是要冗余…...
Python3 笔记:部分专有名词解释
1、python 英 /ˈpaɪθən/ 这个词在英文中的意思是蟒蛇。但据说Python的创始人Guido van Rossum(吉多范罗苏姆)选择Python这个名字的原因与蟒蛇毫无关系,只是因为他是“蒙提派森飞行马戏团(Monty Python's Flying Ci…...
javaAPI文档中文版(JDK11在线版)java帮助文档,掌握文档java学习事半功倍。
🌠个人主页 : 赶路人- - 🌌个人格言 : 要努力成为梧桐,让喜鹊在这里栖息。 要努力成为大海,让百川在这里聚积。 11.by,prep.凭,靠,沿 [baɪ] 12.press,v.按,压 [prɛs] 菜鸟教程javaAPI文档中文…...
移动端适配:vw适配方案
vw (Viewport Width) 是一种长度单位,代表视口宽度的百分比。1vw 等于视口宽度的1%。在网页设计和前端开发中,vw 单位常用于实现响应式设计和屏幕适配,尤其是针对不同尺寸和分辨率的移动设备。 为什么使用vw适配? 响应式: 使用v…...
实战Java虚拟机-实战篇
一、内存调优 1.内存溢出和内存泄漏 内存泄漏(memory leak):在Java中如果不再使用一个对象,但是该对象依然在GC ROOT的引用链上,这个对象就不会被垃圾回收器回收,这种情况就称之为内存泄漏。内存泄漏绝大…...
力扣:349. 两个数组的交集
349. 两个数组的交集 给定两个数组 nums1 和 nums2 ,返回 它们的 交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 示例 1: 输入:nums1 [1,2,2,1], nums2 [2,2] 输出:[2]示例 2: …...
深度学习之基于Matlab的BP神经网络交通标志识别
欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 随着智能交通系统(ITS)的快速发展,交通标志识别࿰…...
Linux备份服务及rsync企业备份架构(应用场景)
备份服务概述 备份服务:需要使用到脚本,打包备份,定时任务. 备份服务:rsyncd服务,不同主机之间数据传输. 特点: rsync是个服务也是命令使用方便,具有多种模式传输数据的时候是增量传输 增量与全量: 全量 :无论多少数据全部推…...
用手机打印需要下载什么软件
在快节奏的现代生活中,打印需求无处不在,无论是工作文件、学习资料还是生活小贴士,都可能需要一纸呈现。然而,传统的打印方式往往受限于时间和地点,让人倍感不便。今天,就为大家推荐一款便捷又省钱的手机打…...
Storm在Java中的应用
Storm在Java中的应用主要体现在构建分布式实时计算系统,用于处理大数据流。以下是一些Storm在Java中的具体应用场景和步骤: 实时数据处理:Storm可以实时地接收、处理和传输数据。对于需要快速响应的应用场景,如在线广告、金融交易…...
基于Python的电影订票系统毕业设计源码
博主介绍:✌ 专注于Java,python,✌关注✌私信我✌具体的问题,我会尽力帮助你。一、研究目的本研究旨在设计并实现一个基于Python的电影订票系统,以满足现代观众对于便捷、高效电影购票服务的需求。具体研究目的如下: 首先…...
嵌入式Linux设备可靠升级方案设计与实践
1. 嵌入式Linux升级方案概述在嵌入式Linux设备开发中,软件升级是一个永恒的话题。作为一名嵌入式开发工程师,我经历过无数次凌晨三点被叫起来处理升级失败的痛苦经历。经过多年实践,我总结出一套同时支持本地和远程升级的可靠方案,…...
MS5540C传感器驱动开发:类SPI协议与校准算法详解
1. MS5540C传感器库深度解析:面向嵌入式工程师的底层驱动开发指南 MS5540C系列是TE Connectivity(原Measurement Specialties)推出的高精度、低功耗数字压力/温度复合传感器,广泛应用于潜水设备、气象站、工业过程监控及水下机器人…...
赋能智能体大脑:在快马平台中集成AI模型实现高级对话能力
在探索AI辅助开发的过程中,我发现智能体的核心能力很大程度上取决于其"大脑"——也就是背后支撑决策的AI模型。最近在InsCode(快马)平台实践了一个很有意思的项目:如何为智能体集成AI模型来实现高级对话功能。整个过程让我深刻体会到ÿ…...
[MediaForge] 音频技术深度解析(五):常见问题与快速解决
目录 问题排查方法论 音频采集常见问题 音频重采样常见问题 音频编码常见问题 音频封装常见问题 端到端完整流程问题 快速定位工具集 AI 辅助排查指南 1. 问题排查方法论 1.1 通用排查流程 ┌───────────────────────────────────────…...
2026届毕业生推荐的五大AI科研神器实测分析
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 在运用人工智能辅助写作这个行为当中,所生成的内容常常带有十分明显的机械感。所…...
2025届最火的六大AI科研方案解析与推荐
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 在人工智能内容生成技术越来越普遍的情形下,各种各样的降AI工具出现了࿰…...
雯雯的后宫-造相Z-Image-瑜伽女孩部署避坑指南:xinference.log日志错误排查大全
雯雯的后宫-造相Z-Image-瑜伽女孩部署避坑指南:xinference.log日志错误排查大全 部署一个AI文生图模型,最让人头疼的往往不是写提示词,而是服务启动时那一串串让人摸不着头脑的日志。特别是当你满怀期待地部署“雯雯的后宫-造相Z-Image-瑜伽…...
docker零基础入门:用快马ai生成带详细注释的容器化示例项目
最近在学习Docker技术,发现对于新手来说,从零开始配置容器环境确实会遇到不少坑。好在发现了InsCode(快马)平台,它提供的AI辅助功能可以快速生成带详细注释的Docker示例项目,特别适合像我这样的初学者。下面分享下我的学习过程&am…...
BCI Competition IV 2a数据集深度解析:脑机接口EEG信号处理实战指南
BCI Competition IV 2a数据集深度解析:脑机接口EEG信号处理实战指南 【免费下载链接】bcidatasetIV2a This is a repository for BCI Competition 2008 dataset IV 2a fixed and optimized for python and numpy. This dataset is related with motor imagery 项目…...
