概念:若方法名称相同,参数列表不同,这样的方法之间构成重载关系 (Overload)。
重载的体现形式
• 方法重载的主要形式体现在:参数的个数不同、参数的类型不同、参数 的顺序不同,与返回值类型和形参变量名无关,但建议返回值类型最好 相同。
• 判断方法能否构成重载的核心:调用方法时能否加以区分。
重载的实际意义:方法重载的实际意义在于调用者只需要记住一个方法名就可以调用各种 不同的版本,来实现各种不同的功能
public class Point {
int x; // 用于描述横坐标的成员变量
int y; // 用于描述纵坐标的成员变量
// 自定义无参构造方法
Point() {}
// 自定义有参构造方法
Point(int x, int y) {
this.x = x;
this.y = y;
}
// 自定义成员方法实现特征的打印
void show() {
System.out.println("横坐标是:" + x + ",纵坐标是:" + y);
}
// 自定义成员方法实现纵坐标减1的行为
void up() {
y--;
}
// 自定义成员方法实现纵坐标减去参数指定数值的行为
void up(int y) {
this.y -=y;
}
public static void main(String[] args) {
// 2.使用有参方式构造对象并打印特征
Point p2 = new Point(3, 5);
// 3.调用重载的成员方法
p2.up();
p2.show(); // 3 4
p2.up(2);
p2.show(); // 3 2
}
}
code
/*
编程实现方法重载主要形式的测试
*/
public class OverloadTest {
// 自定义成员方法
void show() {
System.out.println("show()");
}
void show(int i) { // ok 体现在方法参数的个数不同
System.out.println("show(int)");
}
void show(int i, double d) { // ok 体现在方法参数的个数不同
System.out.println("show(int, double)");
}
void show(int i, int j) { // ok 体现在方法参数的类型不同
System.out.println("show(int, int)");
}
void show(double d, int i) { // ok 体现在方法参数的顺序不同
System.out.println("show(double, int)");
}
/*
void show(double a, int b) { // error 与参数变量名无关
System.out.println("show(double, int)");
}
*/
/*
int show(double d, int i) { // error, 与返回值类型无关
System.out.println("show(double, int)");
}
*/
public static void main(String[] args) {
// 1.声明OverloadTest类型的引用指向该类型的对象
OverloadTest ot = new OverloadTest();
// 2.调用show方法
ot.show();
ot.show(66);
ot.show(66, 3.14);
ot.show(66, 118);
ot.show(3.14, 118);
//ot.show(3.14, 66);
}
}