在Java中,繼承和多態是面向對象編程的兩個重要特性。它們分別解決了代碼復用和接口抽象的問題。
繼承是一種創建類的方式,新創建的類繼承了一個已存在的類的屬性和方法。這樣,新創建的類可以重用(或者覆蓋)已存在類的行為,而不需要重新編寫相同的代碼。
繼承的實現方式是通過關鍵字extends來完成的。例如:
class Animal {
void eat() {
System.out.println("Animal eats");
}
}
class Dog extends Animal {
// Dog類繼承了Animal類,因此可以使用eat()方法
}
public class Main {
public static void main(String[] args) {
Dog myDog = new Dog();
myDog.eat(); // 輸出 "Animal eats"
}
}
多態是指允許一個接口(或類)表示多種類型的能力。在Java中,多態主要體現在繼承和接口實現上。多態的實現主要有兩種方式:方法重寫(覆蓋)和接口實現。
方法重寫(覆蓋)是指子類重新定義了父類的方法,從而改變了方法的行為。這樣,當我們使用子類對象調用該方法時,將會執行子類中的版本,而不是父類中的版本。例如:
class Animal {
void eat() {
System.out.println("Animal eats");
}
}
class Dog extends Animal {
@Override
void eat() {
System.out.println("Dog eats");
}
}
public class Main {
public static void main(String[] args) {
Animal myAnimal = new Dog();
myAnimal.eat(); // 輸出 "Dog eats"
}
}
接口實現是指一個類實現了一個或多個接口,從而繼承了接口中的方法。接口定義了一組方法,但不提供具體實現。實現接口的類必須提供接口中所有方法的具體實現。例如:
interface Flyable {
void fly();
}
class Bird implements Flyable {
@Override
public void fly() {
System.out.println("Bird flies");
}
}
public class Main {
public static void main(String[] args) {
Flyable myBird = new Bird();
myBird.fly(); // 輸出 "Bird flies"
}
}
總結: