方法重載
基本介紹
java 中允許同一個類中,多個同名方法的存在,但要求形參列表不一致!
比如:System.out.println(); out 是 PrintStream 類型
重載的好處
- 減輕了起名的麻煩
- 減輕了記名的麻煩
注意事項和使用細節
- 方法名:必須相同
- 參數列表:必須不同(參數類型或個數或順序,至少有一樣不同,參數名無要求)
- 返回類型:無要求
練習題
第一題:b c d e
第二題:編寫程序,類 Methods 中定義三個重載方法并調用。方法名為 m。三個方法分別接收一個 int 參數、兩個 int 參數、一個字符串參數。分別執行平方運算并輸出結果,相乘并輸出結果,輸出字符串信息。在主類的 main() 方法中分別用參數區別調用三個方法。
import java.util.Scanner;
public class OverLoadExercise{public static void main(String[] args){Methods method = new Methods();int result1 = method.m(10);System.out.println("平方運算:" + result1); int result2 = method.m(9,10); System.out.println("兩數相乘并輸出:" + result2);String s = method.m("方法的重載");System.out.println("打印字符串:" + s); }
}
class Methods{public int m(int num){return num * num;}public int m(int num1, int num2){return num1 * num2;}public String m(String s){return s;}}
第三題:在 Methods 類,定義三個重載方法 max(),第一個方法,返回兩個 int 值中的最大值,第二個方法,返回兩個double 值中的最大值,第三個方法,返回三個 double 值中的最大值,并分別調用三個方法。
import java.util.Scanner;
public class OverLoadExercise{public static void main(String[] args){Methods method = new Methods();int result1 = method.max(1,10);System.out.println("兩個int值的最大值:" + result1); double result2 = method.max(9.0,10.0); System.out.println("兩個double值的最大值:" + result2);double result3 = method.max(1.0,2.0,3.0);System.out.println("三個double值的最大值:" + result3); }
}
class Methods{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 max1 = num1 > num2 ? num1 : num2;return max1 > num3 ? max1 : num3;}}
可變參數
基本概念
java 允許將同一個類中多個同名同功能但參數個數不同的方法,封裝成一個方法。就可以通過可變參數實現。
基本語法
訪問修飾符 返回類型 方法名(數據類型... 形參名){}
例子:求和。
//1. int... 表示接受的是可變參數,類型是int,即可以接收多個int(0-多)
//2.使用可變參數時,可以當做數組來使用 即 nums 可以當做數組
//3.遍歷nums求和
public class VarParameter{public static void main(String[] args){HspMethod m = new HspMethod();System.out.println("和為:" + m.sum(1,9,80));}
}
class HspMethod{public int sum(int... nums){int sum = 0;for(int i = 0; i < nums.length; i++){sum += nums[i];}//System.out.println("接收的參數個數= "+ nums.length);return sum;}
}
注意事項和使用細節
-
可變參數的實參可以為 0 個或任意多個。
-
可變參數的實參可以為數組。
例子:
public class VarParameter{public static void main(String[] args){HspMethod m = new HspMethod();int[] arr = {1,2,3};m.sum(arr);} } class HspMethod{public void sum(int... nums){System.out.println("接收的參數個數="+ nums.length);} }
-
可變參數的本質就是數組。
-
可變參數可以和普通類型的參數一起放在形參列表,但必須保證可變參數在最后。
public class VarParameter{public static void main(String[] args){HspMethod m = new HspMethod();m.sum("Str",2,1.0,2.0);} } class HspMethod{public void sum(String m, int n, double... nums){System.out.println("接收的參數為:" + m + " " + n + " " + nums[0] + " " + nums[1]);} }
-
一個形參列表中只能出現一個可變參數。
練習題
有三個方法,分別實現返回姓名和兩門課成績(總分),返回姓名和三門課成績(總分),返回姓名和五門課成績(總分)。封裝成一個可變參數的方法。
public class VarParameter{public static void main(String[] args){HspMethod m = new HspMethod();m.showScore("王二",99.5,100);m.showScore("張三",99,100,98.5);m.showScore("李五",99,100,100,100,90.5);}
}
class HspMethod{public void showScore(String name, double... nums){double sum = 0.0;int i = 0;for(; i < nums.length; i++){sum += nums[i];}System.out.println("姓名:" + name );System.out.println("一共有"+ i + "門成績,課程總成績為:" + sum);}
}