Java中的方法可以進(jìn)行重載和重寫,但是這兩種技術(shù)是不同的。重載是指在一個(gè)類中定義多個(gè)具有相同名稱的方法,但是它們的參數(shù)類型或參數(shù)個(gè)數(shù)不同。下面是一個(gè)示例:
public class MyClass { public void doSomething(int n) { // body } public void doSomething(String s) { // body } }
可以看到,這兩個(gè)方法都有相同的名稱doSomething,但是一個(gè)需要一個(gè)整數(shù)參數(shù),而另一個(gè)需要一個(gè)字符串參數(shù)。這種方法稱為方法重載,可以在調(diào)用代碼中根據(jù)要傳遞的參數(shù)的不同來使用不同的方法。
另一方面,重寫是指在子類中重新定義基類中定義的方法。子類中的方法必須具有與基類中的方法相同的名稱、參數(shù)和返回類型。這種技術(shù)用于實(shí)現(xiàn)多態(tài)性,因?yàn)樵谶\(yùn)行時(shí),基類引用可以引用派生類的實(shí)例,從而調(diào)用相應(yīng)的方法。下面是一個(gè)示例:
public class MyParentClass { public void doSomething() { // body } } public class MyChildClass extends MyParentClass { public void doSomething() { // body } }
在這個(gè)例子中,MyChildClass繼承自MyParentClass并重寫了doSomething()方法。當(dāng)我們創(chuàng)建一個(gè)MyChildClass實(shí)例并調(diào)用doSomething()方法時(shí),子類中的方法將被執(zhí)行。
因此,重載和重寫是Java中重要的概念,但是它們的用途和實(shí)現(xiàn)是不同的。