这一章节我们来聊一下方法重载。
1.为什么需要方法重载?
因为在java里面规定,构造器只有一个,那么,如果我需要多种方式来创建对象,那么怎么做?这个时候就需要方法重载,因为构造器全名叫做构造器函数,他是一个特殊的方法,因此,我们可以对他使用方法重载,而且方法重载对于所有方法都是一样的。
例子:
package com.ray.testobject;
public class Test {
public static void main(String[] args) {
}
}
class TestClass {
public TestClass() {
}
public TestClass(String param) {
}
}
上面代码显示,我们需要两种不同的方法来创建TestClass,因此我们对构造器进行重载。
而且对于普通的方法都是一样的,我们下面的例子代码是对上面的代码的改造。
package com.ray.testobject;
public class Test {
private void info() {
}
private void info(String id) {
}
public static void main(String[] args) {
}
}
class TestClass {
public TestClass() {
}
public TestClass(String param) {
}
}
2.区分重载方法
2.1 参数位置不同
package com.ray.testobject;
public class Test {
private void info(int id, String name) {
}
private void info(String name, int id) {
}
public static void main(String[] args) {
}
}
这种方法是可以重载方法,但是不推荐,因为这样的重载可读性差,难维护,易出错。
2.2 参数类型变化
package com.ray.testobject;
public class Test {
private void info(int id) {
}
private void info(String id) {
}
public static void main(String[] args) {
}
}
我们通过类型的变化,更好的区分开两个方法。
注意:在重载的过程中,需要注意参数类型的范围大小。
package com.ray.testobject;
public class Test {
private void info(char id) {
System.out.println("char id:" + id);
}
private void info(int id) {
System.out.println("int id:" + id);
}
public static void main(String[] args) {
new Test().info(2);
}
}
输出:
int id:2
因为一般来说,除非特殊的使用到char类型,不然,Test里面的char id函数的重载永远都不会被使用,因为输入的参数大部分都自动升级到int。
而且编译器自动的选择方法来实现预算,例子:
package com.ray.testobject;
public class Test {
private void info1(short id) {
System.out.println("short id");
}
private void info1(int id) {
System.out.println("int id");
}
private void info2(int id) {
System.out.println("int id");
}
private void info2(short id) {
System.out.println("short id");
}
public static void main(String[] args) {
double x = 0;
new Test().info1((int) x);
new Test().info2((short) x);
}
}
输出:
int id
short id
从上面的输出结果可以看见,编译器会自动根据参数,选择合适的类型。
总结:我们这一章节简单的讨论了方法的重载,以及怎样重载。
这一章节就到这里,谢谢。
-----------------------------------
目录
版权声明:本文为博主原创文章,未经博主允许不得转载。
分享到:
相关推荐
从头写React-like框架的工程搭建实现 最近在网上看到了 Build your own React 这篇文章,作者从零开始实现了一个简易类 React 框架,虽然没有过多的优化,但 React 中的核心思想 Concurrent Mode,Fiber ...
从头开始学习Java课程-资料来源PillsInformática。
视频 https://www.bilibili.com/video/BV1914y1s7hi
视频 https://www.bilibili.com/video/BV1914y1s7hi
赖世雄英语从头学 下载-附件资源
军工行业2021年度投资策略:而今迈步从头越-20201115-招商证券.pdf
外卖订餐java源码 你会学到什么 通过 Java 片段的构建块,您将能够立即了解 Java 编程的要点。 你需要什么 勇敢地浏览存储库! 或替代开源 JDK 1.8 版本 截至今天,该存储库已通过测试 Oracle JDK 1.8 OpenJDK 1.8 ...
本资料是UCSF DOCK的使用案例分享的输入资料,将使用DOCK 6.11自带的片段库,使用DOCK/RDKit的 DOCK_D3N功能从头设计分子。便于使用者直接从这部分设计工作开始,不需花时间来准备输入文件。
Java-3D游戏引擎与基本游戏Java中使用LWJGL,OpenGL,OpenAL等的3D游戏引擎。 从头开始
乙二醇2020年度策略报告:“熊”关漫道真如铁,而今迈步从头越-20191230-光大期货-36页.rar
java实现验证码功能源码 Java Periphery 是一个高性能库,用于用户空间 Linux 中的 GPIO、LED、PWM、SPI、I2C、MMIO 和串行外设 I/O 接口访问。 我没有尝试从头开始构建它并生成 JNI 包装器。 这节省了大量手动编码...
开发人员零java-Mentorama 在此存储库中,将从头开始插入Java Developer模块的Mentorama课程期间开发的所有练习。
java源码字符串缓冲区 这是 Java String 、 StringBuilder和StringBuffer方法/API 的完整指南。 本指南的源代码示例在我们的本地开发环境中进行了良好的测试,您可以将这些示例用作无错误。 您可以在 上了解更多信息...
一份很全面关于java的常用方法总结,开发时,我们记不了那么多方法,所以这个htm文档很适合大家在开中应用 字符串 1、获取字符串的长度 length() 2 、判断字符串的前缀或后缀与已知字符串是否相同 前缀 startsWith...
3D游戏从头编-网上收集,很基础. 第一回:开发环境 第二回:3D基本概念 第三回:第一个D3D程序 第四回:渲染顶点 第五回:渲染索引顶点 第六回:摄象机 第七回:灯光 第八回:纹理 第九回:3D模型(.x)
例如,当我们想从头开始创建RPC框架时,我们需要了解Java动态代理和序列化。 这是清单: 技术 模块/链接 设想 地位 评论 动态代理 动态代理 RPC 智商 完毕 字节程序Java代理, 乐器, 字节好友 字节码程序java-...
如果您了解一点C或JavaScript,本指南就是从头开始学习Java。 这是一个正在进行的工作,应该在下一个Java LTS(Java 17)发布时准备就绪。 所有代码都在启用预览功能的Java 14上运行。 注意:如果您只希望查看...
Java机器人 这是一个从头开始编写JavaScript机器人
2D-Java-Tile-Game 我第一次进入 Java 世界!... 一切都是从头开始编写的(从创建一个基本的 JFrame,到制作画布,渲染图形等......)。 在 src 目录中查看我的脚本。 来自 CodeNMore 的灵感: :
自动玩家和挂钩框架的子弹地狱游戏从头后项目- Netdex/twinject-源码