1.方法
在Java中,方法就是用來完成解決某件事情或實現某個功能的辦法。
方法實現的過程中,會包含很多條語句用於完成某些有意義的功能——通常是處理文本,控制輸入或者計算數值。我們可以通過在程序代碼中引用方法名稱和所需的參數,實現在該程序中執行(調用)該方法,方法一般都有一個返回值,用來作爲事情的處理結果。
方法的具體語法格式:
修飾符 返回值類型 方法名(參數類型 參數1,參數類型 參數2,······){
執行語句
------
return 返回值:
}
如下例1演示了方法的定義和調用
public class MethodDemo01 {
public static void main(String[] args) {
int area = getArea(3, 5); // 調用 getArea方法
System.out.println(" The area is " + area);
}
// 下面定義了一個求矩形面積的方法,接收兩個參數,其中x爲高,y爲寬
public static int getArea(int x, int y) {
int temp = x * y; // 使用變量temp記住運算結果
return temp; // 將變量temp的值返回
}
}
結果爲:
在代碼中,定義了getArea()方法用於求矩形的面積,參數x和y分別用於接收調用方法是傳入的高和寬,return語句用於返回計算所得的面積,在main()方法中調用getArea()方法,獲得矩形的面積,並將結果打印。
方法調用圖解:
2.方法的重載
Java允許在一個類中定義多個名稱相同的方法,但是參數的類型或個數必須不同,這就是方法的重載。
假設要在程序中實現一個對數字求和的方法,由於參與求和數字的個數和類型都不確定,因此要針對不同的情況去設計不同的方法。如下例2是實現對兩個整數相加、對三個整數相加以及對兩個小數相加的功能。
public class MethodDemo02 {
public static void main(String[] args) {
// 下面是針對求和方法的調用
int sum1 = add01(1, 2);
int sum2 = add02(1, 2, 3);
double sum3 = add03(1.2, 2.3);
// 下面的代碼是打印求和的結果
System.out.println("sum1=" + sum1);
System.out.println("sum2=" + sum2);
System.out.println("sum3=" + sum3);
}
// 下面的方法實現了兩個整數相加
public static int add01(int x, int y) {
return x + y;
}
// 下面的方法實現了三個整數相加
public static int add02(int x, int y, int z) {
return x + y + z;
}
// 下面的方法實現了兩個小數相加
public static double add03(double x, double y) {
return x + y;
}
}
結果爲:
程序需要針對每一種求和的情況都定義一個方法,如果每個方法的名稱都不相同,在調用時就很難分清哪種情況該調用哪個方法。使用方法重載對其進行修改。
下面的三個方法互爲重載關係
public static int add(int x,int y) {邏輯} //兩個整數加法
public static int add(int x,int y,int z) {邏輯} //三個整數加法
public static int add(double x,double y) {邏輯} //兩個小數加法
通過方法重載方式進行修改之後代碼如下:
public class MethodDemo03 {
public static void main(String[] args) {
// 下面是針對求和方法的調用
int sum1 = add(1, 2);
int sum2 = add(1, 2, 3);
double sum3 = add(1.2, 2.3);
// 下面的代碼是打印求和的結果
System.out.println("sum1=" + sum1);
System.out.println("sum2=" + sum2);
System.out.println("sum3=" + sum3);
}
// 下面的方法實現了兩個整數相加
public static int add(int x, int y) {
return x + y;
}
// 下面的方法實現了三個整數相加
public static int add(int x, int y, int z) {
return x + y + z;
}
// 下面的方法實現了兩個小數相加
public static double add(double x, double y) {
return x + y;
}
}
運行結果與前一個代碼運行結果相同。
方法的重載與返回值類型無關,它只有兩個條件,一是方法名相同,二是參數個數或參數類型不相同。
3.方法覆蓋
方法覆蓋是指子類的方法名與父類的方法名完全相同,並且返回值類型、入口參數的數目、類型均相同,即在子類中重新改寫了父類的同名方法。