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

Java 類別定義完全指南:成員類、抽象類、介面與 final 類的語法細節與設計智慧

     編輯:Java 相關知識

類別定義完整語法

[public|protected|private] [abstract|final] class 類別名 {
    // 類別內容
}

修飾子說明:
• 一個 .java 檔**僅能有一個**與檔名同名的 public 類別。
• 同一檔案可定義多個非 public 類別(default/abstract/final),但不提倡(僅限檔案內部使用)。

成員類(內部類)

public class Outer {
    private class PrivateInner {} // 僅外部類可見
    public class PublicInner {}   // 外部可見
}

外部存取語法: new Outer.PublicInner() —— 與靜態方法呼叫語法一致。
private 類別只能透過此語法定義。

抽象類

public abstract class Vehicle {
    public abstract float speed(); // 抽象方法:無實作,強制子類實作
    public void run() { ... }      // 具體方法:預設行為
    public void stop() { ... }
    public boolean isMoving() { ... }
}

核心價值:定義一類物件的通用行為(具體方法),預留差異點(抽象方法)強制子類實作。適用於「預期每個子類都會有自己具體實作」的場景。

final 類

public final class FinalClass {}

禁止被繼承,通常用於工具類、不可變物件(如 String)。

介面


public interface MyInterface {
    public static final String CONSTANT = "test"; // 隱含 public static final
    public void publicMethod();                   // 隱含 public abstract
    void defaultMethod() throws Exception;        // 介面方法預設 public abstract
}

實作類:


public class MyInterfaceImpl implements MyInterface {
    public void publicMethod() { ... }
    public void defaultMethod() throws Exception { ... } // 必須為 public
}

規則:
• 一類可實作多介面(用逗號分隔)。
• 介面方法名衝突但回傳型別不同 → 編譯錯誤。
• 所有介面方法實作**必須為 public**。

介面指標與方法可見性陷阱


MyInterface intf = new MyInterfaceImpl();
intf.publicMethod();    // 可呼叫
intf.defaultMethod();   // 編譯錯誤!介面中為 default,視為 package-private
((MyInterfaceImpl)intf).defaultMethod(); // 強轉後可呼叫

啟示:介面方法**建議全部顯式宣告 public**,避免指標呼叫受限。

介面的架構價值:解耦、測試、演進

  • 實作與調用分離: 透過介面指標持有實作,調用方零依賴具體類。更換資料庫只需重寫實作類,調用層零修改。
  • 大工廠/IOC 容器模式: 統一管理介面與實作對應關係,getInstance() 回傳介面,調用方透明化。
  • 單元測試友善: 層次分離使 Mock/Stub 替換真實實作極其容易。
  • Spring/IoC 推動下成為主流共識。

補充:實作介面的類,介面即其「父類型」之一

多型賦值相容性同樣適用。

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