JAVA重载概念

在Java 中,同一个类中的2个或2个以上的方法可以有同一个名字,只要它们的参数声明不同即可。在这种情况下,该方法就被称为重载(overloaded ),这个过程称为方法重载(method overloading )。方法重载是Java 实现多态性的一种方式。如果你以前从来没有使用过一种允许方法重载的语言,这个概念最初可能有点奇怪。但是你将看到,方法重载是Java 最激动人心和最有用的特性之一。 ### JAVA重载概念详解 #### 一、方法重载的概念 在 Java 编程语言中,方法重载(Method Overloading)是一种非常重要的特性,它允许我们在同一个类中定义多个同名但参数列表不同的方法。这种方法重载的概念是实现多态性的基础之一,并且为程序员提供了极大的灵活性和便利性。 #### 二、方法重载的基本规则 1. **方法名称相同**:这是方法重载的基础,所有重载的方法必须具有相同的名称。 2. **参数列表不同**: - 参数的数量不同 - 参数的数据类型不同 - 参数的顺序不同 3. **返回类型不影响重载**:即使两个方法的返回类型不同,只要它们的参数列表不同,就可以构成重载。 4. **访问修饰符、异常声明不影响重载**:这些因素与方法的重载无关,只要参数列表不同即可。 #### 三、示例解析 下面通过一个具体的示例来进一步理解方法重载的概念: ```java class OverloadDemo { void test() { System.out.println("No parameters"); } // Overload test for one integer parameter. void test(int a) { System.out.println("a: " + a); } // Overload test for two integer parameters. void test(int a, int b) { System.out.println("a and b: " + a + " " + b); } // Overload test for a double parameter. double test(double a) { System.out.println("double a: " + a); return a * a; } } class Overload { public static void main(String[] args) { OverloadDemo ob = new OverloadDemo(); double result; // Call all versions of test() ob.test(); // No parameters ob.test(10); // One integer parameter ob.test(10, 20); // Two integer parameters result = ob.test(123.25); // Double parameter System.out.println("Result of ob.test(123.25): " + result); } } ``` 输出结果如下: ``` No parameters a: 10 a and b: 10 20 double a: 123.25 Result of ob.test(123.25): 15190.5625 ``` 在这个例子中,`OverloadDemo` 类包含了四个名为 `test` 的方法,它们分别接受不同数量和类型的参数。这四个方法构成了重载关系,每个版本的 `test` 方法根据其参数的不同执行相应的操作。 #### 四、自动类型转换与重载 Java 的自动类型转换也会影响方法的重载。当调用方法时,如果传递的参数类型不是方法所期望的类型,Java 会尝试自动地进行类型转换以匹配方法的参数类型。例如: ```java class OverloadDemo { void test() { System.out.println("No parameters"); } // Overload test for two integer parameters. void test(int a, int b) { System.out.println("a and b: " + a + " " + b); } // Overload test for a double parameter. void test(double a) { System.out.println("Inside test(double) a: " + a); } } class Overload { public static void main(String[] args) { OverloadDemo ob = new OverloadDemo(); int i = 88; ob.test(); // No parameters ob.test(10, 20); // Two integer parameters ob.test(i); // This will invoke test(double) ob.test(123.2); // This will invoke test(double) } } ``` 输出结果如下: ``` No parameters a and b: 10 20 Inside test(double) a: 88.0 Inside test(double) a: 123.2 ``` 在这个例子中,`OverloadDemo` 类包含三个 `test` 方法,其中一个是接受两个整型参数的方法,另一个是接受一个双精度浮点型参数的方法。当我们调用 `test(i)` 时,虽然 `i` 是一个整型变量,但由于 Java 的自动类型转换机制,这个调用实际上会匹配到接受 `double` 类型参数的方法。 #### 五、结论 方法重载是 Java 中一个非常实用的功能,它使得程序员能够在不改变方法名的情况下实现对不同参数类型的处理。通过合理利用方法重载,可以使代码更加简洁、易于理解和维护。此外,Java 的自动类型转换机制进一步增强了方法重载的灵活性,让程序员能够更灵活地设计和使用方法。





























责任编辑:admin 更新日期:2005-8-6
在Java 中,同一个类中的2个或2个以上的方法可以有同一个名字,只要它们的参数声明不同即可。在这种情况下,该方法就被称为重载(overloaded ),这个过程称为方法重载(method overloading )。方法重载是Java 实现多态性的一种方式。如果你以前从来没有使用过一种允许方法重载的语言,这个概念最初可能有点奇怪。但是你将看到,方法重载是Java 最激动人心和最有用的特性之一。
当一个重载方法被调用时,Java 用参数的类型和(或)数量来表明实际调用的重载方法的版本。因此,每个重载方法的参数的类型和(或)数量必须是不同的。虽然每个重载方法可以有不同的返回类型,但返回类型并不足以区分所使用的是哪个方法。当Java 调用一个重载方法时,参数与调用参数匹配的方法被执行。
下面是一个说明方法重载的简单例子:
// Demonstrate method overloading.
class OverloadDemo {
void test() {
System.out.println("No parameters");
}
// Overload test for one integer parameter.
void test(int a) {
System.out.println("a: " + a);
}
// Overload test for two integer parameters. void test(int a,int b) { System.out.println("a and b: " + a + " " + b);}
// overload test for a double parameter
double test(double a) {
System.out.println("double a: " + a);
class Overload {
public static void main(String args[]) {
OverloadDemo ob = new OverloadDemo();
double result;
// call all versions of test()ob.test();ob.test(10);ob.test(10,20);result = ob.test(123.25);System.out.println("Result of ob.test(123.25): " + result);
}
}
该程序产生如下输出:
No parameters
a: 10
a and b: 10 20
double a: 123.25
Result of ob.test(123.25): 15190.5625
从上述程序可见,test()被重载了四次。第一个版本没有参数,第二个版本有一个整型参数,第三个版本有两个整型参数,第四个版本有一个double 型参数。由于重载不受方法的返回类型的影响,test()第四个版本也返回了一个和重载没有因果关系的值。
当一个重载的方法被调用时,Java 在调用方法的参数和方法的自变量之间寻找匹配。但是,这种匹配并不总是精确的。在一些情况下,Java 的自动类型转换也适用于重载方法的自变量。例如,看下面的程序:
// Automatic type conversions apply to overloading.
剩余6页未读,继续阅读

- libai125932012-12-17对重载很不错的诠释,既生动形象,又容易理解!!
- John_Me2013-07-06对重载的诠释挺好的,容易理解。

- 粉丝: 2
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 反垄断法之电子商务市场反垄断规制(BB交易市场).doc
- 平面设计实施方案实训六Photoshop色彩调整.doc
- 初探网络游戏虚拟财产保险法律问题.doc
- 2017年度大数据时代的互联网信息安全考试及答案.doc
- 基于大数据的高职英语写作教学改革探讨.docx
- 基于云计算医疗物资供应商管理平台解决方案.docx
- 初中信息技术教学如何提升学生的网络学习能力.docx
- 基于PLC控制的打地鼠游戏装置的设计与制作.docx
- 移动互联网技术在物业管理中的应用.docx
- 大数据时代下如何做好初中英语课堂的教学改革.docx
- 计算机科学及其技术的发展趋势研究.docx
- 无线网络视频监控系统实施方案概述.doc
- 互联网金融专业化销售流程.ppt
- VB宿舍文档管理系统论文范文.doc
- 项目管理学概论作业题答案.doc
- 单片机步进电动机控制系统方案设计书.doc


