方法重载(OverLoad)
基本介绍
Java中允许同一个类中,多个同名方法的存在,但要求 形参列表不一致!
比如:System.out.println(); out 是 PrintStream 类
重载的好处
- 减轻了起名的麻烦
- 减轻了记名的麻烦
快速入门案例
案例:类:MyCalculator 方法:calculate
- calculate(int n1, int n2) //两个整数的和
- calculate(int n1, double n2) //一个整数,一个 double 的和
- calculate(double n2, int n1)//一个 double ,一个 Int 和
- calculate(int n1, int n2,int n3)//三个 int 的和
public class OverLoad {
public static void main(String[] args) {
// TODO Auto-generated method stub
MyCalculator mc=new MyCalculator();
System.out.println(mc.calculate(1, 2));
System.out.println(mc.calculate(1.1, 2));
}
}
class MyCalculator{
//下面的四个calculate方法构成了重载
//两个整数的和
public int calculate(int n1,int n2){
return n1+n2;
}
//一个整数,一个double的和
public double calculate(int n1,double n2){
return n1+n2;
}//一个double,一个int的和
public double calculate(double n2,int n1){
System.out.println("calculate(double n1,int n2)被调用");
return n1+n2;
}//三个int的和
public int calculate(int n1,int n2,int n3){
return n1+n2+n3;
}
}
注意事项和使用细节
- 方法名:必须相同
- 形参列表:必须不同(形参类型或个数或顺序,至少有一样不同,参数名无要求)
- 返回类型:无要求
练习题
- 编写程序,类Methods中定义三个重载方法并调用。方法名为m。三个方法分别接收一个int参数、两个int参数、一个字符串参数。分别执行平方运算并输出结果,相乘并输出结果,输出字符串信息。在主类的main ()方法中分别用参数区别调用三个方法。
- 在Methods类,定义三个重载方法max(),第一个方法,返回两个int值中的最大值,第二个方法,返回两个double值中的最大值,第三个方法,返回三个double值中的最大值,并分别调用三个方法。
public class OverLoadExercise {
public static void main(String[] args) {
// TODO Auto-generated method stub
Methods method=new Methods();
method.m(10);//100
method.m(10,20);//200
method.m("ok");//ok
System.out.println( method.max(1.0, 2.0, 3.0));
}
}
/*
编写程序,类Methods中定义三个重载方法并调用。方法名为m。三个方法分别接受一个int型
、两个int型,相乘并输出结果,输出字符串信息,在主类的main()方法中
分别用参数区别调用三个方法
*/
/*
定义三个重载方法max(),第一个方法,返回两个int值中的最大值,
第二个方法,返回两个double值中的最大值,第三个方法
返回三个double值中的最大值,并分别调用三个方法
*/
class Methods{
//分析
//1方法名max
//2形参(int,int)
//3.int
public int max(int n1,int n2) {
return n1>n2?n1:n2;
}
public double max(double n1,double n2) {
return n1>n2?n1:n2;
}
public double max(double n1,double n2,double n3) {
return (n1>n2?n1:n2)>n3?(n1>n2?n1:n2):n3;
}
//不使用自动转换比 使用自动转换 优先级高
//分析
//1方法名m
//2形参int
//3void
public void m(int n) {
System.out.println("平方="+(n*n));
}
//1方法名m
//2形参(int,int)
//3void
public void m(int n1,int n2) {
System.out.println("相乘="+(n1*n2));
}
//1方法名m
//2形参(String)
//3void
public void m(String str) {
System.out.println("传入的str="+str);
}
}