Java中的重寫和重載是兩個常見的概念,雖然它們都與方法有關,但其本質上是不同的。
重載(Overload)
重載是指在同一個類中定義多個同名的方法,但這些方法的參數列表不同。編譯器會根據方法的參數類型和數量來匹配調用的方法。
例如:
public void print(String str){ System.out.println("print string:"+str); } public void print(int num){ System.out.println("print int:"+num); }
以上代碼中,我們定義了兩個同名的print方法,一個參數類型為String,一個參數類型為int。當我們在代碼中調用print方法時,編譯器會自動根據參數類型匹配合適的方法進行調用。
重寫(Override)
重寫是指在子類中重新定義一個與父類中同名同參數列表的方法。子類中的該方法會覆蓋父類中的同名方法,父類中的方法只有被子類調用才能夠執(zhí)行。
例如:
class Animal{ public void shout(){ System.out.println("Animal shout"); } } class Dog extends Animal{ public void shout(){ System.out.println("Dog shout"); } }
以上代碼中,我們定義了一個Animal類和一個Dog類,其中Dog類繼承了Animal類。在Dog類中我們重寫了shout方法并改變其輸出內容。當我們創(chuàng)建一個Dog對象并調用它的shout方法時,會輸出“Dog shout”而不是“Animal shout”。
總結來說,重載是指方法在同一個類中根據參數類型和數量的不同而產生不同的行為,而重寫是指子類在繼承父類后重新定義并改變了一些方法的行為。