在Java語言中,重載(Overload)和重寫(Override)是兩個非常重要的概念,但它們的實(shí)現(xiàn)機(jī)制、應(yīng)用場景以及適用范圍都是不一樣的。
首先,重載指的是在同一個類中定義多個同名但參數(shù)類型或參數(shù)個數(shù)不同的方法,以適應(yīng)不同的輸入?yún)?shù)并及時(shí)返回不同的輸出結(jié)果。在調(diào)用該方法時(shí),編譯器會根據(jù)所傳參數(shù)的類型和數(shù)量自動選擇調(diào)用哪一個匹配的方法,從而實(shí)現(xiàn)方法重載。
public class OverloadDemo { public void printNum(int num) { System.out.println("輸入整數(shù):" + num); } public void printNum(double num) { System.out.println("輸入小數(shù):" + num); } public void printNum(String num) { System.out.println("輸入字符串:" + num); } public static void main(String[] args) { OverloadDemo obj = new OverloadDemo(); obj.printNum(10); // 調(diào)用第一個重載方法 obj.printNum(3.14); // 調(diào)用第二個重載方法 obj.printNum("Hello"); // 調(diào)用第三個重載方法 } }
其次,重寫指的是子類重新定義了父類中已經(jīng)存在的同名方法,并且參數(shù)列表和返回值類型都必須相同,這樣子類對象在調(diào)用該方法時(shí),實(shí)際上是調(diào)用了被重寫后的子類方法,而不再是父類中原有的方法。
class Animal { public void shout() { System.out.println("動物發(fā)出叫聲!"); } } class Dog extends Animal { @Override public void shout() { System.out.println("汪汪汪……"); } } public class OverrideDemo { public static void main(String[] args) { Animal obj1 = new Animal(); Animal obj2 = new Dog(); obj1.shout(); // 調(diào)用父類方法,輸出“動物發(fā)出叫聲!” obj2.shout(); // 調(diào)用子類方法,輸出“汪汪汪……” } }
總之,重載和重寫是Java語言中兩個不同的概念,前者是一個類中多個同名方法的實(shí)現(xiàn)方式,后者則是繼承關(guān)系中重寫父類同名方法的實(shí)現(xiàn)方式。
上一篇css換頁橫向菜單分塊