一、重載與重寫的概念
在Java中,重載(overload)和重寫(override)是兩個常用的概念。重載指的是一個類中有多個方法名稱相同但參數類型或個數不同的方法;而重寫指的是繼承關係中,子類中定義了與父類中名稱、參數類型和個數都相同的方法,來覆蓋父類中的方法。
二、方法簽名
在Java中,方法的簽名是由方法名稱和參數類型組成的。重載是指在同一個類中定義方法名稱相同但參數類型或個數不同的方法。在編譯時,編譯器會根據方法的參數類型或個數判斷調用哪個方法。例如:
public class Calculation { public int add(int a, int b) { return a + b; } public int add(int a, int b, int c) { return a + b + c; } }
上面的代碼定義了一個名為Calculation的類,其中定義了兩個add方法,它們的方法名相同但參數個數不同。在使用時,可以通過傳遞不同個數的參數來調用不同的方法。
Calculation calc = new Calculation(); int result1 = calc.add(1, 2); // 調用add(int a, int b)方法 int result2 = calc.add(1, 2, 3); // 調用add(int a, int b, int c)方法
三、繼承關係
重寫(override)指的是在類的繼承關係中,子類中定義了與父類中名稱、參數類型和個數都相同的方法,來覆蓋父類中的方法。在調用子類的方法時,如果該方法在子類中已被重寫,則會優先調用子類中的方法。
以下是一個簡單的例子:
public class Animal { public void move() { System.out.println("動物可以移動"); } } public class Dog extends Animal { public void move() { System.out.println("狗可以跑和走"); } public void bark() { System.out.println("狗可以叫"); } } public class TestDog { public static void main(String args[]) { Animal animal = new Animal(); // Animal對象 Animal dog = new Dog(); // Dog對象 animal.move(); // 執行 Animal 類的方法 dog.move(); // 執行 Dog 類的方法 } }
輸出結果如下:
動物可以移動 狗可以跑和走
四、重載和重寫的區別
重載是在同一個類中定義方法名稱相同但參數類型或個數不同的方法,重寫是在繼承關係中,子類中定義了與父類中名稱、參數類型和個數都相同的方法,來覆蓋父類中的方法。兩者的區別在於:
- 重載的目的是為了方便調用同一種功能的不同實現,重寫的目的是為了實現子類對父類的方法進行覆蓋和擴展;
- 重載的方法的參數類型和個數不同,重寫的方法的參數類型和個數必須相同;
- 重載是在同一個類中進行的,重寫是在繼承關係中進行的。
下面是一個同時使用重載和重寫的例子:
public class Calculation { public int add(int a, int b) { return a + b; } public double add(double a, double b) { return a + b; } } public class MoreCalculation extends Calculation { @Override public int add(int a, int b) { return a + b + 1; } } public class TestCalculation { public static void main(String args[]) { Calculation calc = new MoreCalculation(); System.out.println(calc.add(1, 2)); // 輸出4,調用MoreCalculation類的add(int a, int b)方法 System.out.println(calc.add(1.0, 2.0)); // 輸出3.0,調用Calculation類的add(double a, double b)方法 } }
上面的代碼中,定義了三個類:Calculation、MoreCalculation和TestCalculation。Calculation類中定義了兩個add方法,一個接收int類型的參數,一個接收double類型的參數。MoreCalculation類繼承自Calculation類,並重寫了add(int a, int b)方法。TestCalculation類中創建了一個MoreCalculation對象,並分別調用了add方法。
輸出結果如下:
4 3.0
可以看到,MoreCalculation類的add(int a, int b)方法返回的值為a + b + 1。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/286770.html