天天看點

Java方法的重載

Java方法的重載

重載就是在一個類中,有相同的函數(方法)名稱,但形參不同的函數(方法)。

方法的重載的規則:

  • 方法名必須相同
  • 參數清單必須不同(個數不同、類型不同、參數排列順序不同等)。
  • 方法的傳回類型可以相同也可以不同
  • 僅僅傳回類型不同不足以成為方法的重載

實作理論:

  • 方法名稱相同時,編譯器會根據調用方法的參數個數、參數類型等去逐個比對,以選擇對應的方法,如果比對失敗,則編譯器報錯。

重載的意義:

  • 是為了友善外界對方法進行調用,什麼樣的參數程式都可以找到對應的方法來執行,展現的是程式的靈活性

如下代碼塊,max方法比較大小隻能是兩個lnt類型相比較,那麼我們如何讓max方法可以比較兩個double類型的數,甚至比較一個int類型的數,和一個double類型的數呢?這裡就需要使用方法的重載。

package cn.test;
/*
 * 本類用于測試重載01
 */
public class TestHeavyLoad {

	public static void main(String[] args) {
		int max = max(15,35);
		System.out.println(max);//35
	}
	//兩個int類型相比較
	public static int max(int a,int b) {

		if(a == b) {
			System.out.println("兩值相等");
			return 0;
		}else if(a > b) {
			return a;
		}else {
			return b;
		}
	}

}

           

實作效果如下(兩個數,不同類型):

package cn.test;
/*
 * 本類用于測試重載02
 */
public class TestHeavyLoad {

	public static void main(String[] args) {
//		int max = max(15,35);//35
//		double max = max(15.5,35.5);//35.5
//		double max = max(35,15.5);//35.0
		double max = max(35.8,15);//35.8
		
		System.out.println(max);
	}
	
	//兩個int類型相比較
	public static int max(int a,int b) {

		if(a == b) {
			System.out.println("兩值相等");
			return 0;
		}else if(a > b) {
			return a;
		}else {
			return b;
		}
	}
	//兩個double類型相比較
	public static double max(double a,double b) {

		if(a == b) {
			System.out.println("兩值相等");
			return 0;
		}else if(a > b) {
			return a;
		}else {
			return b;
		}
	}
	//第一個為int類型,第二個為double類型
	public static double max(int a,double b) {

		if(a == b) {
			System.out.println("兩值相等");
			return 0;
		}else if(a > b) {
			return a;
		}else {
			return b;
		}
	}
	//第一個數為double類型,第二個數為int類型
	public static double max(double a,int b) {

		if(a == b) {
			System.out.println("兩值相等");
			return 0;
		}else if(a > b) {
			return a;
		}else {
			return b;
		}
	}
}

           
package cn.test;
/*
 * 本類用于測試重載03
 */
public class TestHeavyLoad {

	public static void main(String[] args) {
//		int max = max(15,35);//35
		int max = max(35,66,18);//66
		System.out.println(max);
	}
	
	//兩個int類型相比較
	public static int max(int a,int b) {

		if(a == b) {
			System.out.println("兩值相等");
			return 0;
		}else if(a > b) {
			return a;
		}else {
			return b;
		}
	}
	//比較三個數,取最大值
	public static int max(int a,int b,int c) {
		//定義一個result變量來接受最大值,局部變量要聲明初始值。
		int result = 0;
		result = a;
		if(result == b) {
			if(result == c) {
				System.out.println("三個數都相等!");
				return 0;
			}else if(result > c) {
				return result;
			}else {
				return c;
			}
		}else if(result > b) {
			if(result > c) {
				return result;
			}else {
				return c;
			}
		}else {
			if(b > c) {
				return b;
			}else {
				return c;
			}
		}
	}
}

           
package cn.test;
/*
 * 本類用于測試重載04
 */
public class TestHeavyLoad {

	public static void main(String[] args) {
//		int max = max(15,35);//35
		int max = max(18.6,32.3);//32
		System.out.println(max);
	}
	
	//兩個int類型相比較
	public static int max(int a,int b) {

		if(a == b) {
			System.out.println("兩值相等");
			return 0;
		}else if(a > b) {
			return a;
		}else {
			return b;
		}
	}
	//兩個double類型相比較,傳回值為int類型
	public static int max(double a,double b) {

		if(a == b) {
			System.out.println("兩值相等");
			return 0;
		}else if(a > b) {
			return (int)a;
		}else {
			return (int)b;
		}
	}
}