Java是一種面向對象的編程語言,提供了重載、重寫和覆蓋等機制,這些機制可以讓程序員更好地利用Java的特性,編寫高效的代碼。
重載(Overloading)是指同一類中的多個方法,名稱相同但參數列表不同。例如:
public void print(int i) { System.out.println(i); } public void print(String s) { System.out.println(s); }
重載方法可以根據傳遞的參數類型和數量來確定要調用的方法。在上面的例子中,我們可以分別調用print(int i)和print(String s)方法。
重寫(Overriding)是指在子類中重新定義父類中已有的方法。子類中的方法有與父類中的方法相同的名稱、參數列表和返回類型。例如:
class Animal { public void makeSound() { System.out.println("An animal is making sound."); } } class Cat extends Animal { public void makeSound() { System.out.println("A cat is meowing."); } }
在上面的例子中,我們定義了一個Animal類和一個Cat類。Cat類繼承了Animal類,并重寫了它的makeSound()方法。當我們使用Cat類的實例調用makeSound()方法時,輸出的是“ A cat is meowing.”而不是“An animal is making sound.”。
覆蓋(Overriding)是指在子類中定義一個與父類中同名的方法,參數列表和返回類型也相同,但訪問修飾符可以不同。例如:
class Bird { protected void fly() { System.out.println("A bird is flying."); } } class Penguin extends Bird { public void fly() { System.out.println("A penguin cannot fly."); } }
在上面的例子中,我們定義了一個Bird類和一個Penguin類。Penguin類繼承了Bird類,并覆蓋了它的fly()方法。我們可以看到,Penguin類中的fly()方法的訪問修飾符為public,而Bird類中的fly()方法的訪問修飾符為protected。這樣可以使得Penguin類的fly()方法在其他類中可以訪問。
在Java中,重載、重寫和覆蓋都是Java面向對象編程的重要機制。這些機制可以讓程序員更好地利用Java的特性,編寫高效的代碼。