JAVA 方法的重载

方法重载

java 中允许同一个类中,多个同名方法的存在,但要求形参列表不一致

重载的好处

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

重载的注意事项

  1. 方法名:必须相同

  2. 形参列表:必须不同

    • 形参类型个数,或顺序必须有一个不一样参数名无要求

      public void calculate(int n1,int n2) {
          int ret =n1+n2;
          System.out.println("有两个整数形参的calculate被调用");
          System.out.println(n1+ "+" + n2 +"=" + ret);
      }
      	
      //	以下没有构成重载,而是方法的重复定义
      //	public void calculate(int a,int n2) {
      //		double ret =n1+n2;
      //		System.out.println(n1+ "+" + n2 +"=" + ret);
      //	}
      
  3. 返回类型:无要求

    public void calculate(int n1,int n2) {
        int ret =n1+n2;
        System.out.println("有两个整数形参的calculate被调用");
        System.out.println(n1+ "+" + n2 +"=" + ret);
    }
    //	以下没有构成重载,而是方法的重复定义,改变返回值类型,
    //	并没有作用到判断到底调用那个方法
    //	public intvoid calculate(int a,int b) {
    //		int ret =n1+n2;
    //		return ret;
    //	}
    

重载练习

题目:

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

package Object_Practice;

public class OverLoadExercise {
	public static void main(String[] args) {
		Method method = new Method();
		method.m(2);//4
		method.m(2,3);//6
		method.m("我真的很不错");
	}
}


class Method{
	public void m(int num) {
		int ret =num * num;
		System.out.println(num+"的平方="+ret);
	}
	
	public void m(int num1, int num2) {
		int ret = num1 * num2;
		System.out.println(num1+ "*"+ num2 + "=" + ret);
	}
	
	public void m(String str) {
		System.out.println("传入是String"+str);
	}
}

题目:

定义三个重载方法 max(),第一个方法,返回两个 int 值中的最大值,第二个方法,返回两个 double 值中的最大值,第三个方法返回三个 double 值中的最大值,并分别调用三个方法

package Object_Practice;

public class OverLoadExercise {
	public static void main(String[] args) {
		/*
		 * 重载练习1,进行计算
		 */
		System.out.println("重载练习题一");
		Method method = new Method();
		method.m(2);//4
		method.m(2,3);//6
		method.m("我真的很不错");
		
		
		System.out.println("=========");
		System.out.println("重载练习题二");
		
		/*
		 * 重载练习2
		 */
		System.out.println("max=" + method.max(10, 20) );
		System.out.println("max=" + method.max(1.1, 2.2));
		System.out.println("max=" + method.max(1.1, 2.2,3.3));
	}
}


class Method{
	/*
	 * 重载练习1
	 */
	public void m(int num) {
		int ret =num * num;
		System.out.println(num+"的平方="+ret);
	}
	
	public void m(int num1, int num2) {
		int ret = num1 * num2;
		System.out.println(num1+ "*"+ num2 + "=" + ret);
	}
	
	public void m(String str) {
		System.out.println("传入是String"+str);
	}
	
	/*
	 * 重载练习2
	 * 返回最大值
	 */
	
	public int max(int num1 , int num2) {
		return num1 > num2? num1:num2; 
	}
	
	public double max(double num1 , double num2) {
		return num1 > num2? num1:num2; 
	}
	
	
	public double max(double num1 , double num2,double num3) {
		double max = num1 > num2? num1:num2;
		return max>num3 ? max:num3;
	}
}

注意

  • 方法重载,优先匹配不需要强制转换的重载方法
posted @ 2022-01-19 12:10  DL50  阅读(108)  评论(0编辑  收藏  举报