Java中的方法重寫和方法重載是面向?qū)ο缶幊痰闹匾拍睢K鼈冊(cè)诔绦蛟O(shè)計(jì)過(guò)程中發(fā)揮著重要作用,可以讓程序更加靈活、易于維護(hù)和擴(kuò)展。
方法重寫(Override)是指子類重新定義了父類中的方法,保持方法名、參數(shù)類型、返回值類型、參數(shù)個(gè)數(shù)等方面的一致,但是方法的實(shí)現(xiàn)代碼可以有所變化。這樣就可以實(shí)現(xiàn)父類的方法功能,同時(shí)在子類中實(shí)現(xiàn)更為特殊的功能。例如:
class Person { public void sayHello() { System.out.println("Hello, there!"); } } class Student extends Person { public void sayHello() { System.out.println("Hi, I'm a student!"); } } public class Main { public static void main(String[] args) { Person p1 = new Person(); p1.sayHello(); // 輸出:Hello, there! Person p2 = new Student(); p2.sayHello(); // 輸出:Hi, I'm a student! } }
方法重載(Overload)是指在同一個(gè)類中定義了多個(gè)方法,它們具有相同的名稱但參數(shù)列表不同。參數(shù)列表的不同可以體現(xiàn)在參數(shù)個(gè)數(shù)、參數(shù)類型、參數(shù)順序等方面。然而,方法重載與返回值類型無(wú)關(guān),也就是說(shuō)無(wú)法通過(guò)返回類型來(lái)區(qū)別方法重載。例如:
class Calculator { public int add(int x, int y) { return x + y; } public double add(double x, double y) { return x + y; } public int add(int x, int y, int z) { return x + y + z; } } public class Main { public static void main(String[] args) { Calculator calculator = new Calculator(); System.out.println(calculator.add(1, 2)); // 輸出:3 System.out.println(calculator.add(1.5, 2.5)); // 輸出3.0 System.out.println(calculator.add(1, 2, 3)); // 輸出:6 } }
總的來(lái)說(shuō),方法重寫和方法重載都是Java中的面向?qū)ο缶幊痰闹匾拍睢7椒ㄖ貙懣梢宰屪宇惱^承父類方法的特征,同時(shí)又可以實(shí)現(xiàn)更具體的功能;而方法重載則可以在一個(gè)類中定義多個(gè)同名方法,以滿足不同的需求。