后端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…...
使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...
Springboot社区养老保险系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...
