多態性是Java面向對象編程的一個重要概念,它允許不同的對象以一致的方式響應同一個方法調用,具體表現為對象在運行時可以表現出多個不同的形態。多態性主要有兩種不同的形式:編譯時多態性(靜態多態性)和運行時多態性(動態多態性)。
1. 編譯時多態性(靜態多態性):
– 也稱為方法重載(method overloading)。
– 在編譯階段確定調用哪個方法,根據方法名稱、參數數量和參數類型的不同來區分不同的方法。
– 例如,在同一個類中可以定義多個方法名相同但參數不同的方法。
示例代碼:
java
class Calculator {
int add(int a, int b) {
return a + b;
}
double add(double a, double b) {
return a + b;
}
}
2. 運行時多態性(動態多態性):
– 也稱為方法重寫(method overriding)。
– 在運行時確定調用哪個方法,根據對象的實際類型來決定。
– 需要繼承和方法重寫的支持,通常用于實現子類覆蓋父類的方法。
示例代碼:
java
class Animal {
void makeSound() {
System.out.println(“Animal makes a sound”);
}
}
class Dog extends Animal {
@Override
void makeSound() {
System.out.println(“Dog barks”);
}
}
class Cat extends Animal {
@Override
void makeSound() {
System.out.println(“Cat meows”);
}
}
在運行時多態性中,可以通過父類的引用來引用子類的對象,并且調用的方法將根據實際對象的類型而執行不同的操作。
總結:
多態性是Java面向對象編程的重要特性,它分為編譯時多態性和運行時多態性。編譯時多態性通過方法重載實現,而運行時多態性通過方法重寫和繼承來實現,允許不同的對象以一致的方式響應方法調用,提高了代碼的靈活性和可擴展性。