Java是一種面向?qū)ο蟮木幊陶Z言,其中的重寫(Override)是一種很重要的概念。重寫是指子類繼承父類的方法,并且在子類中實(shí)現(xiàn)相同的方法名和參數(shù)列表,但是給予不同的實(shí)現(xiàn)方式,以達(dá)到特定的需求。重寫的方法和父類的方法擁有相同的名稱、參數(shù)列表、返回類型都必須相同。
// 父類 public class Animal { public void move() { System.out.println("動物可以移動"); } } // 子類 public class Dog extends Animal { public void move() { System.out.println("狗可以跑和走"); } } // 測試類 public class TestDog { public static void main(String args[]) { Animal a = new Animal(); Animal b = new Dog(); a.move(); b.move(); } }
上述代碼中,Animal類有一個(gè)可以移動的方法move(),而Dog類繼承了這個(gè)方法并重寫了它,變成了可以跑和走的方法。在測試類中利用多態(tài)性先創(chuàng)建了一個(gè)Animal對象并執(zhí)行了move()方法,然后將Dog對象向上轉(zhuǎn)型為Animal對象并執(zhí)行了move()方法。這就體現(xiàn)了方法的多態(tài)性,當(dāng)運(yùn)行結(jié)果顯示狗可以跑和走時(shí),說明了重寫的效果。
與重寫類似的是,天天見也有類似的概念,叫做重載(Overload)。重載是指在同一個(gè)類中定義多個(gè)同名方法,但是參數(shù)列表不同,利用參數(shù)的不同來區(qū)分這些方法,可以讓同一個(gè)方法名字好記而且使用方便,增強(qiáng)了代碼的可讀性。
public class OverloadDemo { public void info() { System.out.println("1. 無參數(shù)的info方法"); } public void info(int age) { System.out.println("2. 重載的info方法, age參數(shù):" + age); } public void info(String name) { System.out.println("3. 重載的info方法,name參數(shù):" + name); } public void info(String name, int age) { System.out.println("4. 重載的info方法,name參數(shù):" + name + ";age參數(shù):" + age); } public static void main(String[] args) { OverloadDemo od = new OverloadDemo(); od.info(); od.info(30); od.info("張三"); od.info("李四", 40); } }
上述代碼中,定義了4個(gè)同名的方法,但是參數(shù)的類型和個(gè)數(shù)不同,即重載。在測試類中,調(diào)用了這4個(gè)方法分別輸出不同的信息。這就體現(xiàn)了方法的重載性,當(dāng)運(yùn)行結(jié)果顯示了對應(yīng)方法的結(jié)果,說明了重載的效果。