目录
方法的重载是什么?
方法的重载是指在一个类中定于多个不同名的方法 ,但要求每个方法具有不同的 参数 的类型或参数的个数。
调用重载方法时,Java编译器能通过检查调用的方法的参数类型和个数选择一个恰当的方法。
方法重载通常用于创建完成一组任务相似但参数的类型或参数个数或参数顺序不同的方法。
Java的重载 ,就是在类中可以创建多个方法,它们可以有相同的名字 , 但必须具有不同的参数,即或者是参数的个数不同,或者是参数的类型不同。
调用方法时,通过传递给它们的不同个数和类型的参数以及传入参数的顺序来决定具体使用哪个方法。
重载的好处:
减轻了起名的麻烦
减轻了记名的麻烦
方法重载的定义:
如果有两个方法的方法名相同,但参数不一致,那么可以说一个方法是另一个方法的重载 。
注意事项:
方法名 : 必须相同
方法的修饰符可以不相同
main 方法也可以被重载
形参列表: 必须不同(形参类型或个数或顺序 ,至少有一样不同 ,参数名无要求)
返回类型: 无要求
判断题:
与 void show(int a,char b ,double c){ 构成重载的有:
A.void show ( int x, char y, double z){
}
B.int show ( int a, double c, char b){
}
C.void show ( int a, double c, char b){
}
D.boolean show ( int c, char b ){
}
E.void show ( double c){
}
F.double show ( int x, char y, double z){
}
G.void shows () {
}
解析:
A. 不构成,因为 形参列表中的形参类型或个数或顺序 ,没有一样是不同的 B. 构成,因为 形参类型不同 C. 构成,因为 形参列表中 顺序不同 D. 构成,因为 形参列表中的形参类型或个数或顺序 至少有一样是相同的 E. 构成,因为满足 形参列表中的形参类型或个数或顺序 至少有一样是相同的 F. 不构成,因为 形参列表中的形参类型或个数或顺序 ,没有一样是不同的 ,虽然返回值是double ,但与构成重载无关 G. 不构成,因为 方法名不同, 构成重载要求方法名必须相同
编程题:
1. 编写程序 , 类Methods 中定三个重载方法并调用。方法名为m 。三个方法分别接收一个参数、两个参数、一个字符串参数。分别执行平方运算并输出结果,相乘并输出结果,输出字符串信息。在主类的mian() 方法中分别用参数区别调用三个方法。
代码实现:
public class OverLoadExercise {
//在主类的main() 方法中分别用参数区别调用三个方法
public static void main(String[] args) {
Methods methods = new Methods();
methods.m(10);//100
methods.m(10,20);//200
methods.m("hello,Java");
}
}
class Methods {
//分析
//1. 方法名 m
//2. 形参(int)
//3. void
public void m(int n) {
System.out.println("平方=" + (n * n));
}
public void m(int n1, int n2) {
System.out.println("相乘=" + (n1 * n2));
}
public void m(String str) {
System.out.println("传入的Str=" + str);
}
}
结果:
2. 在Methods 类,定义是三个重载方法max() ,第一个方法,返回两个 int 值中的最大值,第二个方法,返回两个 double 值中的最大值,第三个方法,返回三个 double 值中的最大值,并分别调用三个方法。
代码实现:
public class OverLoadExercise {
public static void main(String[] args) {
//在主类的main() 方法中分别用参数区别调用三个方法
Methods methods = new Methods();
System.out.println(methods.max(10, 24));
System.out.println(methods.max(10.0, 24.3));
System.out.println(methods.max(10.8,27.4, 36.0)); //30是一个整数 int 类型,但是下面是 double类型,所以最后输出是 30.0
}
}
class Methods {
// 分析
//1. 方法名 max
//2. 形参(int int)
//3. int
public int max(int n1, int n2) {
//使用三元运算符
return n1 > n2 ? n1 : n2;
}
//1. 方法名 max
//2. 形参(double double)
//3. double
public double max(double n1, double n2) {
return n1 > n2 ? n1 : n2;
}
//1. 方法名 max
//2. 形参(double, double, double)
//3. double
public double max(double n1, double n2, double n3) {
System.out.println("max(double n1 , double n2 , double n3)");
//求出 n1 和 n2 的最大值
double max1 = n1 > n2 ? n1 : n2;
return max1 > n3 ? max1 : n3;
}
public double max(double n1, double n2, int n3) {
System.out.println("max(double n1 , double n2 , int n3)");
//求出 n1 和 n2 的最大值
double max1 = n1 > n2 ? n1 : n2;
return max1 > n3 ? max1 : n3;
}
}
结果: