对于初学者来说,下面的代码一定十分的熟悉。
public class Test {public static void main(String[] args) {int a = 1;
double b = 1.2;
char c = 'C';
boolean d = true;
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
}
}
输出结果显而易见
从中我们不难思考一个问题,
a,b,c,d为四个不同类型的参数,为什么System.out.println(参数)都能输出呢?
查阅 jdk 的文档可以看出,println()有多种重载的方法
这就省去了我们的许多麻烦,一个方法名只要放入的参数不同,即可输出不同的结果。
3. 注意事项和使用细节方法重载就是方法名称重复,加载参数不同。
1. 方法名必须相同
2. 参数列表:必须不同。(参数的类型,个数,顺序,至少有一样不同,参数名无强制要求)
3. 返回类型:无要求。(可相同,可不同)
首先,关于第一点
1. 方法名必须相同
public class Test {//方法名都为Sum
//一个是求两数之和,一个是求三数字和
public int Sum(int x, int y) {return x + y;
}
public int Sum(int x, int y, int z) {return x + y + z;
}
public static void main(String[] args) {Test test = new Test();
int sum1 = test.Sum(1,2);//两数之和
int sum2 = test.Sum(1,2,3);//三数之和
System.out.println(sum1);//3
System.out.println(sum2);//6
}
}
其次,针对第二点
2. 参数列表:必须不同。(参数的类型,个数,顺序,至少有一样不同,参数名无强制要求)
参数的类型不同
public class Test {//类型为int 和 int
public double Sum(int x, int y) {return x + y;
}
//类型为int 和 double
public double Sum(int x, double y) {return x + y;
}
//方法名相同,类型不同,构成重载
public static void main(String[] args) {Test test = new Test();
double sum1 = test.Sum(1,2);//int int
double sum2 = test.Sum(1,2.1);//int double
System.out.println(sum1);//3.0
System.out.println(sum2);//3.1
}
}
参数的个数
public class Test {//参数个数为 int int 两个
public int Sum(int x, int y) {return x + y;
}
//参数为int int int 三个
public int Sum(int x, int y, int z) {return x + y + z;
}
//方法名相同,个数不同构成重载
public static void main(String[] args) {Test test = new Test();
int sum1 = test.Sum(1,2);//两数之和
int sum2 = test.Sum(1,2,3);//三数之和
System.out.println(sum1);//3
System.out.println(sum2);//6
}
}
参数的顺序
public class Test {//类型为double int
public double Sum(double x, int y) {return x + y;
}
//类型为int double
public double Sum(int x, double y) {return x + y;
}
//方法名相同,参数顺序不同,构成重载
public static void main(String[] args) {Test test = new Test();
double sum1 = test.Sum(1.3,2);//double int
double sum2 = test.Sum(1,2.1);//int double
System.out.println(sum1);//3.3
System.out.println(sum2);//3.1
}
}
最后,第三点
3. 返回类型:无要求。(可相同,可不同)
可以看出,仅仅是返回类型不同,编译器会给出警告⚠
如果运行就会出现以下报错
编译器并不能根据返回类型的不同,来判断这两个方法是否是重载,必须有前两点中的任意一点。
5. 练习细节void A(int a, char b, double c) {}
以下与A 构成重载的是?
//不必考虑返回类型
//参数类型相同
//int char double
//int char double
void A(int x, char y, double z) {}//不是
//参数类型不同
//int [char] [double]
//int [double] [char]
int A(int a, double c, char b) {}//是
//参数类型不同
//int [char] [double]
//int [double] [char]
void A(int a, double c, char b) {}//是
//参数类型不同和个数不同
//int char [double]
//int [char] [?]
boolean A(int c, char b) {}//是
//参数类型不同和个数不同
//[int] [char] [double]
//[double] [?] [?]
void A(double c) {}//是
//参数类型想同
//int char double
//int char double
double A(int x, char y, double z) {}/不是
//方法名不同 A AA
void AA() {}//不是
尾言梦想永在凌云意,意气风发。 代码筑就万世基,积沙镇海。
诸君加油(ง •_•)ง
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧