Java中的重載和重寫是兩個(gè)非常重要的概念,雖然它們的名稱相似,但它們的含義和用途卻有很大的不同。
重載(Overloading)指的是在同一個(gè)類中定義多個(gè)方法,并且這些方法有相同的名字但是參數(shù)列表不同。簡單來說,就是通過參數(shù)列表的不同來區(qū)分不同的方法。下面是一個(gè)簡單的例子:
public class Calculator { public int add(int a, int b) { return a + b; } public int add(int a, int b, int c) { return a + b + c; } }
在上面的例子中,我們定義了兩個(gè)名為 "add" 的方法,一個(gè)有兩個(gè)參數(shù),一個(gè)有三個(gè)參數(shù)。雖然它們的名字相同,但是由于參數(shù)列表不同(即參數(shù)個(gè)數(shù)和/或類型不同),它們被視為兩個(gè)不同的方法。這就是重載的基本原理。
重寫(Overriding)指的是在一個(gè)子類中重寫(覆蓋)父類中的某個(gè)方法。這個(gè)時(shí)候,子類中的方法與父類中的方法具有相同的名稱、參數(shù)類型和返回類型,但實(shí)現(xiàn)的內(nèi)容可以不同。下面是一個(gè)例子:
public class Animal { public void move() { System.out.println("Animal is moving..."); } } public class Dog extends Animal { public void move() { System.out.println("Dog is running..."); } }
在上面的例子中,我們定義了一個(gè)名為 "move" 的方法,在 Animal 類中它的實(shí)現(xiàn)是輸出 "Animal is moving...",而在 Dog 類中它的實(shí)現(xiàn)是輸出 "Dog is running..."。通過這種方式,我們在子類中對父類的方法進(jìn)行了重寫,從而實(shí)現(xiàn)了不同的功能。
總結(jié)一下,重載是針對同一個(gè)類中的方法,而重寫是針對父子類中的方法。重載是通過參數(shù)列表的不同來區(qū)分不同的方法,而重寫是在子類中對父類的方法進(jìn)行重新實(shí)現(xiàn)。這兩個(gè)概念都是 Java 中常用的特性,掌握它們對于合理設(shè)計(jì)和優(yōu)化程序都有很大的幫助。