Java中的重載和覆寫(也稱為重寫)是兩個(gè)不同的概念,本文將講述它們的區(qū)別。
重載(Overloading)
<code>public class Calculator { public int add(int a, int b) { return a + b; } public double add(double a, double b) { return a + b; } }</code>
如上面的代碼所示,這個(gè)計(jì)算器類有兩個(gè)add方法。它們的名稱相同,但是參數(shù)類型不同。
當(dāng)我們調(diào)用Calculator對(duì)象的add方法時(shí),Java會(huì)根據(jù)參數(shù)類型的不同來判斷調(diào)用哪個(gè)方法。
<code>Calculator calculator = new Calculator(); int result1 = calculator.add(1, 2); // 調(diào)用第一個(gè)add方法 double result2 = calculator.add(1.0, 2.0); // 調(diào)用第二個(gè)add方法</code>
重載可以使代碼更加簡(jiǎn)潔易懂,也可以提高代碼的復(fù)用性。
覆寫(Overriding)
<code>public class Animal { public void move() { System.out.println("動(dòng)物在移動(dòng)"); } } public class Dog extends Animal { public void move() { System.out.println("狗在奔跑"); } }</code>
如上面的代碼所示,這里有兩個(gè)類,Animal和Dog。Dog是Animal的子類,它覆寫了Animal的move方法。
當(dāng)我們調(diào)用Dog對(duì)象的move方法時(shí),Java會(huì)優(yōu)先調(diào)用Dog類中的move方法。如果Dog沒有覆寫move方法,那么調(diào)用的將是Animal中的move方法。
<code>Dog dog = new Dog(); dog.move(); // 調(diào)用Dog中的move方法</code>
覆寫可以實(shí)現(xiàn)多態(tài),也可以用于實(shí)現(xiàn)接口和抽象類。
總之,重載和覆寫是Java中兩個(gè)重要的概念,我們需要清楚它們之間的區(qū)別,以便更好地應(yīng)用它們。