在Java中,方法可以使用重載和覆蓋的技術(shù)。重載是指在同一個類中定義多個方法,這些方法的名字相同,但它們的參數(shù)類型或個數(shù)不同。覆蓋是指子類中的方法與父類中的方法具有相同的方法名、參數(shù)個數(shù)和參數(shù)類型,并且子類的方法返回值類型和訪問修飾符等與父類的方法相同。
下面分別舉個例子來說明重載和覆蓋:
public class OverloadTest{ public int add(int x, int y){ return x + y; } public double add(double x, double y){ return x + y; } public static void main(String args[]){ OverloadTest obj = new OverloadTest(); int sum1 = obj.add(10, 20); double sum2 = obj.add(3.4, 2.2); System.out.println("sum1: "+sum1); System.out.println("sum2: "+sum2); } }
在上面的例子中,我們定義了一個類 OverloadTest,并且在其中定義了兩個同名方法 add()。傳入這兩個方法的參數(shù)類型不同(一個是 int,一個是 double),因此編譯器能夠判斷到底調(diào)用哪個方法。
class Animal{ public void move(){ System.out.println("動物可以移動"); } } class Dog extends Animal{ public void move(){ super.move(); // 調(diào)用父類的方法 System.out.println("狗可以跑和走"); } } public class TestDog{ public static void main(String args[]){ Animal a = new Animal(); // Animal 對象 Animal b = new Dog(); // Dog 對象 a.move(); // 執(zhí)行 Animal 類的方法 b.move(); // 執(zhí)行 Dog 類的方法 } }
上面的代碼演示了覆蓋,其中類 Animal 定義了一個move()方法,而類 Dog 也定義了 move() 方法并且覆蓋了父類的 move() 方法。注意到在 Dog 類的 move() 方法中,我們調(diào)用了 super.move() 以便能夠調(diào)用到父類的方法實現(xiàn)。
在實際開發(fā)中,重載和覆蓋都是非常常用的技術(shù)。使用這兩種技術(shù)可以寫出更加靈活和可讀性更高的代碼,并且能夠更好地實現(xiàn)程序的擴展和維護(hù)。