Java是一種流行的面向?qū)ο缶幊陶Z(yǔ)言,它支持重載和重寫(xiě)兩種不同類(lèi)型的方法。重載(overloading)和重寫(xiě)(overriding)是兩個(gè)重要的概念,它們用于處理和繼承現(xiàn)有的代碼。雖然它們都涉及到方法的重復(fù)使用,但重載和重寫(xiě)方式截然不同。
重載方法是指通過(guò)為同一個(gè)類(lèi)定義多個(gè)方法來(lái)滿(mǎn)足同一個(gè)名稱(chēng)的不同參數(shù)列表。例如:
public int add(int x, int y) { return x + y; } public int add(int x, int y, int z) { return x + y + z; }
注意:重載方法的方法名稱(chēng)是相同的,但參數(shù)列表是不同的。Java編譯器根據(jù)提供的參數(shù)列表來(lái)選擇調(diào)用哪一個(gè)方法。
另一方面,重寫(xiě)方法是指子類(lèi)通過(guò)覆蓋父類(lèi)的方法來(lái)實(shí)現(xiàn)不同的方法。例如:
class Animal { public void move() { System.out.println("動(dòng)物可以移動(dòng)"); } } 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(); } }
注意:在這個(gè)例子中,Dog類(lèi)繼承了Animal類(lèi),并重寫(xiě)了父類(lèi)中的move()方法。它的行為不同于Animal所定義的行為。實(shí)例化時(shí),對(duì)象b的類(lèi)型是Dog,但它的引用類(lèi)型是Animal。當(dāng)調(diào)用b的move()方法時(shí),調(diào)用了Dog類(lèi)中定義的move()方法。
綜上所述,重載和重寫(xiě)都允許方法的重復(fù)使用。重載適用于同一類(lèi)中重載的方法,而重寫(xiě)適用于子類(lèi)中實(shí)現(xiàn)的方法。對(duì)于Java程序員來(lái)說(shuō),熟悉這兩種不同的方法非常重要。