方法重载(OverLoad)


方法重载(OverLoad)

基本介绍

Java中允许同一个类中,多个同名方法的存在,但要求 形参列表不一致!
比如:System.out.println(); out 是 PrintStream 类

重载的好处

  1. 减轻了起名的麻烦
  2. 减轻了记名的麻烦

快速入门案例

案例:类:MyCalculator 方法:calculate

  1. calculate(int n1, int n2) //两个整数的和
  2. calculate(int n1, double n2) //一个整数,一个 double 的和
  3. calculate(double n2, int n1)//一个 double ,一个 Int 和
  4. 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;
		
	}
}

注意事项和使用细节

  1. 方法名:必须相同
  2. 形参列表:必须不同(形参类型或个数或顺序,至少有一样不同,参数名无要求)
  3. 返回类型:无要求

练习题

  1. 编写程序,类Methods中定义三个重载方法并调用。方法名为m。三个方法分别接收一个int参数、两个int参数、一个字符串参数。分别执行平方运算并输出结果,相乘并输出结果,输出字符串信息。在主类的main ()方法中分别用参数区别调用三个方法。
  2. 在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);
	}
}

文章作者: Chtholly2333
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Chtholly2333 !
  目录