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可以实时地接收、处理和传输数据。对于需要快速响应的应用场景,如在线广告、金融交易…...
4月,新一轮发票抽奖,请收好这份开具发票指南!!
4月,重庆发票抽奖新的一轮发票抽奖已经了(目前第三轮)。你所在的城市不知道是不是也是第三期发票抽奖了。发票抽奖首先需要发票。发票除了线下直接找商家开具外,我们也可以在线上直接开具。这份发票开具指南,归纳总结我…...
OpenClaw+千问3.5-9B电商运营:自动生成商品详情与回复咨询
OpenClaw千问3.5-9B电商运营:自动生成商品详情与回复咨询 1. 为什么选择OpenClaw千问3.5-9B做电商自动化 去年双十一期间,我负责运营的个人店铺单日咨询量突破300条,手忙脚乱到凌晨三点还在回复客户问题。正是这段经历让我开始寻找自动化解…...
OpenClaw技能开发指南:为SecGPT-14B定制专属安全检测模块
OpenClaw技能开发指南:为SecGPT-14B定制专属安全检测模块 1. 为什么需要为SecGPT-14B开发OpenClaw技能? 去年我在做安全审计时,经常需要手动将二进制文件上传到不同检测平台,再人工整理漏洞报告。这种重复劳动让我开始思考&…...
macOS下OpenClaw排错大全:Qwen3.5-9B接口连接问题解决
macOS下OpenClaw排错大全:Qwen3.5-9B接口连接问题解决 1. 问题背景与排查思路 上周我在macOS上部署OpenClaw时,遇到了Qwen3.5-9B接口连接失败的问题。作为一个长期依赖本地AI助手的开发者,这类问题直接影响我的自动化工作流。经过三天断断续…...
Edge/Chrome用户必看:3种免费工具批量清理失效书签(2023实测)
Edge/Chrome用户必备:2023年高效清理失效书签的3种解决方案 每次打开浏览器,看到密密麻麻的书签栏却找不到真正可用的链接?这可能是大多数互联网用户的日常困扰。根据2023年用户调研数据显示,平均每位浏览器用户拥有超过200个书签…...
8086 汇编报错全总结与归纳
一、可能遇到的所有错误汇总错误代码错误含义触发行(你的代码)核心根源A2048Must be index or base registermov [ax],1H、add [dx],[ax]8086 硬件不支持用非BX通用寄存器做内存间接寻址A2035Operand must have sizemov [bx],1H汇编器无法判断操作数是 8…...
基于MPC的四旋翼高度动力学及X-Y平面位置控制设计的实践与仿真
基于MPC的四旋翼高度动力学以及x-y平面位置控制设计 简介:本项目侧重于MPC控制器设计,用于控制四旋翼的高度动力学以及x-y平面位置 就方向动力学而言,使用了定制的离散PID(DPID)控制器 该项目在MATLAB 2022b中进行了完全编码和仿真 此外&…...
基于51单片机的电子秤(4挡)proteus、原理图、流程图 1185-基于51单片机的电子秤...
基于51单片机的电子秤(4挡)proteus、原理图、流程图 1185-基于51单片机的电子秤(4挡)proteus、原理图、流程图、物料清单、仿真图、源代码 功能介绍: 1、基本部分 (1)称重范围用开关分为三挡&am…...
开箱即用!像素语言·维度裂变器部署指南,小白也能快速搭建
开箱即用!像素语言维度裂变器部署指南,小白也能快速搭建 1. 什么是像素语言维度裂变器 像素语言维度裂变器(Pixel Dimension Fissioner)是一款基于MT5-Zero-Shot-Augment核心引擎构建的文本改写与增强工具。它将传统AI工具改造成…...
深入解析:成为一名卓越的 Android 开发工程师
引言 在移动互联网蓬勃发展的今天,Android 系统凭借其开放性和庞大的用户基数,在全球范围内占据着主导地位。Android 开发工程师作为构建移动应用体验的核心力量,其角色日益重要。本文旨在深入探讨成为一名优秀的 Android 开发工程师所需的核心技能、职责要求以及面对的技术…...
