方法、方法重載和方法覆蓋

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.方法覆蓋

    方法覆蓋是指子類的方法名與父類的方法名完全相同,並且返回值類型、入口參數的數目、類型均相同,即在子類中重新改寫了父類的同名方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章