Java学习笔记 --- 方法重载

一、方法重载(OverLoad)

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

重载的好处:减轻了起名的麻烦和记名的麻烦。

案例演示:

public class OverLoad {
	public static void main(String[] args) {
		MyCalculator mc = new MyCalculator();
		System.out.println(mc.calculate(1, 2));
		System.out.println(mc.calculate(1, 1.1));
		System.out.println(mc.calculate(1.1, 1));
		System.out.println(mc.calculate(1, 1, 3));
	}
}

class MyCalculator {
	//下面的四个calculate方法构成了重载
	//两个整数的和
	public int calculate(int n1, int n2) {
		System.out.println("calculate(int n1, int n2)被调用");
		return n1 + n2;
	}
	//一个整数,一个double的和
	public double calculate(int n1, double n2) {
		System.out.println("calculate(int n1, double n2)被调用");
		return n1 + n2;
	}
	//一个double 一个整数的和
	public double calculate(double n1, int n2) {
		System.out.println("calculate(double n1, int n2)被调用");
		return n1 + n2;
	}
	//三个int的和
	public int calculate(int n1, int n2, int n3) {
		System.out.println("calculate(int n1, int n2, int n3)被调用");
		return n1 + n2 + n3;
	}
}

二、方法重载的注意事项和使用细节

1、方法名必须相同

2、形参列表必须不同(形参类型或个数或顺序,至少有一样不同,参数名无要求)

3、返回类型无要求

三、入门练习

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

public class OverLoadExercise {
	public static void main(String[] args) {
		Methodes me = new Methodes();

		me.M(10);//调用计算平方的方法
		me.M(20, 15);//调用计算两数相乘的方法
		me.M("Hello");//调用打印字符串的方法
	}
}

class Methodes {
	//平方运算
	public int M(int n1) {
		System.out.println("平方=" + (n1 * n1));
	}
	//相乘
	public int M(int n1, int n2) {
		System.out.println("相乘=" + (n1 * n2));
	}
	//输出字符串信息
	public String M(String a) {
		System.out.println("字符串=" + a);
	}

}

2、在Method类,定义三个重载方法max(),第一个万法,返回两个Int中的最大值,第二个方法,返回两个double值中的最大值,第三个方法,返回三个double值中的最大值,并分别调用三个方法。

public class OverLoadExercise01 {
	public static void main(String[] args) {
		Methodes me = new Methodes();

		System.out.println("两个int最大值=" + me.Max(1, 5));
		System.out.println("两个double最大值=" + me.Max(2.1, 3.1));
		System.out.println("三个double最大值=" + me.Max(4.5, 4.2, 4.6));
	}
}

class Methodes {
	//返回两个int值中最大的值
	public int Max(int n1,int n2) {
		return n1 > n2 ? n1 : n2;
	}
	//返回两个double值中最大的值
	public double Max(double n1, double n2) {
		return n1 > n2 ? n1 : n2;
	}
	//返回三个double值中最大的值
	public double Max(double n1, double n2, double n3) {
		double max1 = n1 > n2 ? n1 : n2;
		return max1 > n3 ? max1 : n3; 
	}
}

你可能感兴趣的:(java基础学习,学习,java)