首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 基礎:深入理解抽象類別與抽象方法

     編輯:Java 綜合教學

Java 基礎:深入理解抽象類別與抽象方法

在掌握了 Java 繼承機制後,我們來探討另一個核心概念——抽象類別。這是物件導向設計中實現「介面與實作分離」的關鍵機制。

從具體類別到抽象類別的思維轉變

我們先前學過,將事物的屬性與方法封裝成類別。例如建立一個 Person 類別,包含 name、sex 等屬性與 sleep() 方法。但這樣做有一個問題:我們將「人」這個概念過早具體化了——姓名設為「TianYiLuo」、性別設為「男」、睡覺方式寫死為「橫著睡」。這違背了抽象的初衷:應該只定義「有哪些行為」,而不定義「具體如何執行」。

Person 類別示意圖

抽象類別的定義與特徵

抽象類別使用 abstract 關鍵字修飾,主要特徵如下:

  • 可以包含抽象方法(只有宣告、無方法主體)
  • 也可以包含具體方法(有實作)
  • 無法直接使用 new 關鍵字實例化
  • 子類別必須實作父類別所有抽象方法,否則該子類別也必須宣告為抽象類別

抽象類別定義示例   抽象方法示例

繼承與實作:將抽象具體化

抽象類別定義了「契約」,具體子類別負責「履約」。以 Person 為例,定義 sleep()、eat() 兩個抽象方法;Student、Worker、Teacher 等子類別繼承 Person 並實作這些方法。同樣是「睡覺」,學生可能「趴著睡」、工人可能「躺著睡」、教師可能「坐著睡」——行為本質相同,具體形式各異。

子類別實作抽象方法

未完全實作導致編譯錯誤

抽象類別的優勢

  1. 擴展性強:新增新類型的人(如 Doctor)只需繼承 Person 並實作抽象方法,不修改既有代碼。這是多態機制的基礎。
  2. 代碼結構清晰:看到 Person 就知道其子類別都是「人」的具體形式;看到 Door 就知道子類別都是門的種類。語意層次分明。

權限修飾符與覆寫規則

覆寫父類別方法時,權限修飾符遵循「高可覆蓋低,低不可覆蓋高」原則:

public > protected > default(package-private) > private

若父類別方法是 public,子類別覆寫時只能用 public;若子類別嘗試用 default 覆寫 public,編譯器將報錯。

權限覆寫錯誤示例 權限層級說明圖

掌握抽象類別,是通往設計模式與框架原理的必經之路。下一篇我們將探討介面與抽象類別的差異與選擇策略。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved