在Java中,什么時(shí)候用重載,什么時(shí)候用重寫(xiě)?

在Java中,重載(overloading)和重寫(xiě)(overriding)是兩個(gè)不同的概念,它們的應(yīng)用場(chǎng)景也不同。
重載是指在同一個(gè)類(lèi)中定義了多個(gè)方法,它們的方法名相同但參數(shù)列表不同。重載的目的是方便程序員,使得程序代碼更加簡(jiǎn)潔,更易讀懂。
重寫(xiě)是指子類(lèi)重寫(xiě)了父類(lèi)的方法,方法名和參數(shù)列表都相同。重寫(xiě)的目的是為了改變父類(lèi)方法的行為,實(shí)現(xiàn)多態(tài)性。
下面是一些示例代碼:
重載的例子:
public class OverloadExample {
? ?public void print(int i) {
? ? ? ?System.out.println("Integer: " + i);
? ?}
? ?
? ?public void print(double d) {
? ? ? ?System.out.println("Double: " + d);
? ?}
? ?
? ?public void print(String s) {
? ? ? ?System.out.println("String: " + s);
? ?}}// 在其他類(lèi)中使用 OverloadExample 中的方法OverloadExample oe = new OverloadExample();oe.print(1);oe.print(2.0);oe.print("hello");
上述代碼中,OverloadExample 類(lèi)中定義了三個(gè)方法,分別使用了不同的參數(shù)類(lèi)型。在其他類(lèi)中,可以通過(guò)對(duì)象oe調(diào)用這些方法,Java會(huì)根據(jù)傳入的參數(shù)類(lèi)型選擇合適的方法進(jìn)行調(diào)用。
重寫(xiě)的例子:
public class Animal {
? ?public void speak() {
? ? ? ?System.out.println("I am an animal");
? ?}}public class Cat extends Animal {
? ?@Override
? ?public void speak() {
? ? ? ?System.out.println("I am a cat");
? ?}}// 在其他類(lèi)中使用 Cat 中的方法Animal animal = new Cat();animal.speak();
上述代碼中,Animal類(lèi)中定義了一個(gè)speak方法,Cat類(lèi)繼承了Animal類(lèi)并重寫(xiě)了speak方法。在其他類(lèi)中,可以創(chuàng)建一個(gè)Cat對(duì)象,并將其賦值給Animal類(lèi)型的變量animal。調(diào)用animal的speak方法時(shí),實(shí)際上調(diào)用的是 Cat類(lèi)中重寫(xiě)的speak方法。這就體現(xiàn)了多態(tài)性的特點(diǎn)。