」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > Java 中的抽象類別 – 分解它

Java 中的抽象類別 – 分解它

發佈於2024-11-08
瀏覽:721

Abstract Classes in Java – Breaking It Down

什麼是抽象類別?

抽象類別就像其他類別的藍圖。您不能直接從抽象類別建立物件。相反,您可以使用它作為其他類別的基礎,這些類別可以在它的基礎上建立並填寫詳細資訊。

為什麼要使用抽象類別?

當您想要定義具有一些共享功能的一般概念,但您也想為在不同情況下可能有所不同的特定細節留出空間時,抽象類別非常有用。例如,您可能對「動物」有一個一般概念,其中包括飲食或睡眠等常見特徵,但不同的動物可能以不同的方式飲食或睡眠。

建立抽象類別

以下是建立名為 Animal 的抽象類別的方法:

public abstract class Animal {
    abstract void makeSound();  // Abstract method, no body

    void sleep() {
        System.out.println("This animal sleeps.");
    }
}

在此範例中,makeSound() 是一個抽象方法,這表示它還沒有主體。然而 sleep() 方法已完全實作。

擴展抽象類別

現在,讓我們創建一些擴展 Animal 類別的類別:

public class Dog extends Animal {
    void makeSound() {
        System.out.println("The dog barks.");
    }
}

public class Cat extends Animal {
    void makeSound() {
        System.out.println("The cat meows.");
    }
}

Dog 和 Cat 類別都必須提供自己版本的 makeSound() 方法,但它們按原樣繼承 sleep() 方法。

抽象類別與介面

  • 繼承:一個類別只能擴展一個抽象類,但可以實作多個介面。
  • 方法實作: 抽象類別可以同時具有抽象方法(沒有主體)和完全實作的方法。介面(Java 8 之前)只能有抽象方法。
  • 建構子:抽象類別可以有建構函數,而介面不能。

部分實施

當您有一些應在所有子類別之間共用的方法,但您也想強制這些子類別定義某些方法時,抽象類別非常有用。

public abstract class Bird extends Animal {
    void move() {
        System.out.println("The bird flies.");
    }
}

現在,任何擴展 Bird 的類別都會繼承 Animal 的 move() 方法和 sleep() 方法,但仍需要實作 makeSound()。

挑戰:自己試試看!

  1. 使用抽象方法startEngine()建立一個名為Vehicle的抽象類別。
  2. 建立兩個類,Car 和 Motorcycle,擴展 Vehicle 並實作 startEngine() 方法。
  3. 為 Vehicle 添加一個通用方法,例如 stopEngine(),並查看它在子類別中的工作原理。

結論

Java 中的抽象類別提供了一種為相關類別建立共用基礎的方法,同時為這些類別留出了定義特定細節的空間。它們在共享功能和靈活性之間取得了平衡,使您的程式碼既強大又可重複使用。

版本聲明 本文轉載於:https://dev.to/be11amer/abstract-classes-in-java-breaking-it-down-1k79?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3