后端Java开发:第十一天
第十一天:方法重载 - 理解与应用
今天我们继续深入 Java 的世界,讨论 Java 中的 方法重载(Method Overloading)。你可能会想,什么是方法重载?简单来说,方法重载允许你在一个类中定义多个同名方法,只要它们的参数列表不同。方法重载是 Java 中实现多态的一部分,也是 Java 面向对象编程中的一项重要特性。通过方法重载,我们能够让一个方法在不同的输入条件下执行不同的逻辑。
1. 什么是方法重载?
方法重载是指在同一个类中,方法名称相同,但方法的参数列表不同。参数列表的不同可以体现在:
- 参数的个数不同
- 参数的类型不同
- 参数的顺序不同
需要注意的是,方法的返回类型不会作为方法重载的区分依据。
示例:
public class Calculator {// 加法:两个整数public static int add(int a, int b) {return a + b;}// 加法:三个整数public static int add(int a, int b, int c) {return a + b + c;}// 加法:两个浮点数public static double add(double a, double b) {return a + b;}// 加法:两个字符串public static String add(String a, String b) {return a + b;}public static void main(String[] args) {System.out.println(add(5, 10)); // 调用第一个 add(int, int)System.out.println(add(1.5, 2.3)); // 调用 add(double, double)System.out.println(add(1, 2, 3)); // 调用 add(int, int, int)System.out.println(add("Hello, ", "World!")); // 调用 add(String, String)}
}
2. 方法重载的规则
方法重载有以下几个规则,理解这些规则对于你正确使用方法重载至关重要:
- 规则 1:方法名称相同。
- 规则 2:参数列表不同(包括参数的类型、个数、顺序)。
- 规则 3:返回类型不作为重载的区分条件。
举个例子:
public class OverloadExample {public static void display(int a) {System.out.println("Integer: " + a);}public static void display(String b) {System.out.println("String: " + b);}public static void display(double a) {System.out.println("Double: " + a);}
}
3. 如何使用方法重载
在实际开发中,方法重载使得同一个功能可以根据不同的输入参数进行调用。例如,你可以为 add()
方法定义多个版本,处理不同类型的加法运算。
方法重载的好处:
- 代码简洁:你不需要为不同的输入类型创建多个方法名。这样可以减少代码重复,使代码更简洁。
- 提高可读性:同一个方法名称表达了相同的业务逻辑,只是处理的参数不同。
- 扩展性强:你可以根据需求继续扩展更多的重载方法,而无需改动已有代码。
代码示例:
public class Converter {public static String convert(int number) {return "Integer: " + number;}public static String convert(double number) {return "Double: " + number;}public static String convert(String text) {return "String: " + text;}public static void main(String[] args) {System.out.println(convert(10)); // 调用 convert(int)System.out.println(convert(3.14)); // 调用 convert(double)System.out.println(convert("Hello")); // 调用 convert(String)}
}
4. 实例分析
实例 1:创建一个多功能的 print()
方法,打印不同类型的数据。
public class Printer {// 打印整数public static void print(int a) {System.out.println("Integer: " + a);}// 打印字符串public static void print(String b) {System.out.println("String: " + b);}// 打印浮点数public static void print(double c) {System.out.println("Double: " + c);}public static void main(String[] args) {print(10); // 调用 print(int)print("Java"); // 调用 print(String)print(3.14); // 调用 print(double)}
}
输出:
Integer: 10
String: Java
Double: 3.14
实例 2:设计一个 greet()
方法,根据不同的参数形式进行问候。
public class Greeter {// 打印简单问候public static void greet(String name) {System.out.println("Hello, " + name);}// 打印带年龄的问候public static void greet(String name, int age) {System.out.println("Hello, " + name + ". You are " + age + " years old.");}public static void main(String[] args) {greet("Alice"); // 调用 greet(String)greet("Bob", 25); // 调用 greet(String, int)}
}
输出:
Hello, Alice
Hello, Bob. You are 25 years old.
5. 方法重载的常见问题
问题 1:方法的参数类型不一致,但却没有重载
如果两个方法的参数类型完全一样,它们不能构成重载。例如,下面的代码会报错:
public class ErrorExample {// 错误:方法重载不成立public static void display(int a) {System.out.println(a);}public static void display(int b) {System.out.println(b);}
}
解决方案:确保每个方法的参数列表不同,或参数的类型、顺序不同。
6. 总结
今天我们讲解了 方法重载 的基本概念、规则和使用方法。方法重载是 Java 中的一个强大工具,能够帮助我们在一个类中为不同的输入定义不同的处理逻辑,同时保持代码的简洁性和可读性。记住,方法重载要求我们参数列表要有所不同,返回类型和方法名称不能作为重载的依据。希望你通过今天的学习,能够更好地理解方法重载的应用。
明天,我们将继续讲解面向对象的 方法,你将了解到如何在 Java 中定义和使用方法,以及方法的作用范围和特点。敬请期待!
相关文章:
后端Java开发:第十一天
第十一天:方法重载 - 理解与应用 今天我们继续深入 Java 的世界,讨论 Java 中的 方法重载(Method Overloading)。你可能会想,什么是方法重载?简单来说,方法重载允许你在一个类中定义多个同名方…...

基于 GEE 的长时间序列 Landsat 5 影像下载
目录 1 完整代码 2 运行结果 1 完整代码 var LT5 ee.ImageCollection("LANDSAT/LT05/C01/T1"),imageVisParam {"opacity":1,"bands":["B4","B3","B2"],"gamma":1},roi ee.FeatureCollection(&quo…...

Unity-Mirror网络框架从入门到精通之Attributes属性介绍
前言 在现代游戏开发中,网络功能日益成为提升游戏体验的关键组成部分。Mirror是一个用于Unity的开源网络框架,专为多人游戏开发设计。它使得开发者能够轻松实现网络连接、数据同步和游戏状态管理。本文将深入介绍Mirror的基本概念、如何与其他网络框架进…...

软考证书邮寄步骤
一、点击网址 https://www.ruankao.org.cn/ 复制上述网址,粘贴至浏览器中。点击 “报名入口” 。 二、点击入口 选择考试批次。点击你所在考试地点的入口并进入。 三、登录 输入手机号和密码。进行验证。 四、点击基本信息 点击右上角。进入 “基本信息” 。 五、…...

计算机网络 (29)网络地址转换NAT
前言 网络地址转换(Network Address Translation,NAT)是计算机网络中的一种重要协议,它主要用于将私有IP地址转换为公共IP地址,以实现内部网络与外部网络之间的通信。 一、基本概念 NAT是一种在局域网(LAN&…...

nlp培训重点-2
1. 贝叶斯公式 import math import jieba import re import os import json from collections import defaultdictjieba.initialize()""" 贝叶斯分类实践P(A|B) (P(A) * P(B|A)) / P(B) 事件A:文本属于类别x1。文本属于类别x的概率,记做…...

设计模式(1)——面向对象和面向过程,封装、继承和多态
文章目录 一、day11. 什么是面向对象2. 面向对象的三要素:继承、封装和多态2.1 封装**2.1.1 封装的概念****2.1.2 如何实现封装****2.1.3 封装的底层实现**2.1.4 为什么使用封装?(好处)**2.1.5 封装只有类能做吗?结构体…...
培训机构Day24
今天讲了一些javaee比较过时的技术,虽然已经过时,该学的还得学学。 知识点: http://localhost:8080/demo01/demo1?a1&b2&c3 pattern: /demo1 上下文路径:ContextPath,/demo01,不包含请求参数。 …...

1/7 C++
练习:要求在堆区连续申请5个int的大小空间用于存储5名学生的成绩,分别完成空间的申请、成绩的录入、升序排序、成绩输出函数,并在主程序中完成测试 要求使用new #include <iostream>using namespace std; double *addr_new() {double …...

C语言初阶习题【23】输出数组的前5项之和
1. 题目描述 求Snaaaaaaaaaaaaaaa的前5项之和,其中a是一个数字, 例如:222222222222222 2.思路 分析下,222222222222222,怎么把它每一项算出来 2 210222 22102222 2221022222 我们的多项式就是a a*102,…...

Android audio(1)-音频模块概述
Audio模块是Android系统的重要组成部分,在 Android 中负责音频路由,数据处理,音频控制,音频设备管理/切换。 下面的内容大多翻译自android官网,读者可跳过阅读后面的博客。 一、系统架构 下图说明了音频模块的组成,并指出各组成部分所涉及的相关源代码。所谓架构就是说模…...

园林与消防工程:选择正确工程项目管理软件的重要性
在园林与消防工程领域,选择正确的工程项目管理软件对于提高项目效率、优化资源配置以及确保项目质量至关重要。以下是对园林与消防工程中选择正确工程项目管理软件重要性的详细分析: 1.提升项目管理效率 实时监控与跟踪:工程项目管理软件能够…...
分布式环境下定时任务扫描时间段模板创建可预订时间段
🎯 本文详细介绍了场馆预定系统中时间段生成的实现方案。通过设计场馆表、时间段模板表和时间段表,系统能够根据场馆的提前预定天数生成未来可预定的时间段。为了确保任务执行的唯一性和高效性,系统采用分布式锁机制和定时任务,避…...

SQL刷题笔记——高级条件语句
目录 1题目:SQL149 根据指定记录是否存在输出不同情况 2 作答解析 3 知识点 3.1 count函数 3.2 内连接与左连接 1题目:SQL149 根据指定记录是否存在输出不同情况 2 作答解析 #正确答案 select uid, incomplete_cnt, incomplete_rate from (select …...
与 Oracle Dataguard 相关的进程及作用分析
与 Oracle Dataguard 相关的进程及作用分析 目录 与 Oracle Dataguard 相关的进程及作用分析与 Oracle Dataguard 相关的进程及作用分析一、主库的进程1、LGWR 进程2、ARCH进程3、LNS 进程 二、备库的进程1、RFS 进程2、ARCH3、MRP(Managed Recovery Process&#x…...

游戏语音趋势解析,社交互动有助于营造沉浸式体验
语音交互的新架构出现 2024 年标志着对话语音 AI 取得了突破,出现了结合 STT → LLM → TTS 模型来聆听、推理和回应对话的协同语音系统。 OpenAI 的 ChatGPT 语音模式将语音转语音技术变成了现实,引入了基于音频和文本信息进行端到端预训练的模型&…...

美食烹饪互动平台
本文结尾处获取源码。 一、相关技术 后端:Java、JavaWeb / Springboot。前端:Vue、HTML / CSS / Javascript 等。数据库:MySQL 二、相关软件(列出的软件其一均可运行) IDEAEclipseVisual Studio Code(VScode)Navica…...

【51单片机零基础-chapter5:模块化编程】
模块化编程 将以往main中泛型的代码,放在与main平级的c文件中,在h中引用. 简化main函数 将原来main中的delay抽出 然后将delay放入单独c文件,并单独开一个delay头文件,里面放置函数的声明,相当于收纳delay的c文件里面写的函数的接口. 注意,单个c文件所有用到的变量需要在该文…...

Redis中的主从/Redis八股
四、Redis主从 1.搭建主从架构 不像是负载均衡,这里是主从,是因为redis大多数是读少的是写 步骤 搭建实例(建设有三个实例,同一个ip不同端口号) 1)创建目录 我们创建三个文件夹,名字分别叫700…...

ROS笔记
自定义消息的发布 1.创建空间包 1.创建ROS工作空间: mkdir -p ~/catkin_ws/src cd ~/catkin_ws/ catkin_make source devel/setup.bash 创建工作空间,编译设置环境 2.创建工作空间中的ROS包: cd ~/catkin_ws/src catkin_create_pkg your_pa…...
参加技术会议,为程序人生的职业生涯成长添砖加瓦
参加技术会议,为程序人生的职业生涯成长添砖加瓦 关键词:技术会议、程序员职业生涯、职业成长、技术交流、人脉拓展、知识体系升级、职业竞争力 摘要:在快速迭代的IT技术领域,参加技术会议已成为程序员突破职业瓶颈、构建核心竞争力的重要途径。本文从技术会议的核心价值出…...

题海拾贝:P8598 [蓝桥杯 2013 省 AB] 错误票据
Hello大家好!很高兴我们又见面啦!给生活添点passion,开始今天的编程之路! 我的博客:<但凡. 我的专栏:《编程之路》、《数据结构与算法之美》、《题海拾贝》 欢迎点赞,关注! 1、题…...

MCP架构深度解析:从基础原理到核心设计
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 持续学习,不断…...
python魔法函数
Python 中的魔法方法(Magic Methods),也称为特殊方法(Special Methods)或双下方法(Dunder Methods),是以双下划线 __ 开头和结尾的方法。它们用于定义类的行为,例如运算符…...
WPF中自定义消息弹窗
WPF 自定义消息弹窗开发笔记 一、XAML 布局设计 文件:MessageInfo.xaml <Window x:Class"AutoFeed.UserControls.MessageInfo"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.…...

第3节 Node.js 创建第一个应用
Node.js 非常强大,只需动手写几行代码就可以构建出整个HTTP服务器。事实上,我们的Web应用以及对应的Web服务器基本上是一样的。 在我们创建Node.js第一个"Hello, World!"应用前,让我们先了解下Node.js应用是由哪几部分组成的&…...
Kerberos面试内容整理-会话密钥的协商与使用
在 Kerberos 认证过程中,**会话密钥(Session Key)**扮演着关键角色。会话密钥是由 KDC 临时生成并分发给通信双方用于当前会话的对称加密密钥。与用户密码这类长期密钥不同,会话密钥的生命周期很短,仅在特定的认证会话或服务访问期间有效。这种设计大幅提升了安全性:长期…...
【Java】mybatis-plus乐观锁-基本使用
乐观锁(Optimistic Locking)是解决并发问题的重要机制。它通过在数据更新时验证数据版本来确保数据的一致性,从而避免并发冲突。与悲观锁不同,乐观锁并不依赖数据库的锁机制,而是通过检查数据的版本或标志字段来判断数…...
java开发中#和$的区别
在Spring框架中,$ 和 # 是两种不同的表达式前缀,用于从不同的来源获取值或执行计算。下面详细解释它们的区别和用法: 一、$ 占位符(Property Placeholder) 1. 作用 从配置文件(如 application.propertie…...
Correlations氛围测试:文本或图像的相似度热图
1 项目概览:Correlations 是什么? Correlations 是一个交互式 UI 工具,Jina AI 开源项目 Correlations 用于调试和可视化文本或图像向量之间的相似性关系,特别适合:快速把相关内容两两对照,比单纯数字报告更直观。Correlations 把这种快速、主观“氛围检视”做成了可视化…...