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

Java 基礎教程:包機制與模塊化組織最佳實踐

     編輯:Java 程式設計入門

從單文件 HelloWorld.java 走向企業級項目,首要挑戰是如何組織成百上千個類文件。Java package 機制提供了命名空間隔離、訪問控制與物理部署的三位一體解決方案。

包聲明:建立命名空間層級

package com.vamei.society;

public class Human {
    private int height;
    public Human(int h) { this.height = h; }
    public int getHeight() { return height; }
    public void growHeight(int h) { height += h; }
}

命名規範:

  • 域名反寫 作為頂級前綴(com.vamei),全球唯一避免衝突。
  • 業務模塊/層級作為後續路徑(society、creature、util、service...)。
  • 全小寫,單詞不加下劃線。

編譯後 Human.class 必須置於目錄結構 com/vamei/society/ 下,類全限定名為 com.vamei.society.Human。不同包可有同名類,JVM 通過全限定名精準識別。

訪問控制:包級可見性(默認權限)

修飾符同類同包子類(異包)任意處
private✓✗✗✗
default(無)✓✓✗✗
protected✓✓✓✗
public✓✓✓✓

類若無 public,則為包級可見;同理,成員無修飾符默認包級可見。利用此機制隱藏內部實現類,僅暴露門面接口,是封裝的重要手段。

導入與使用:import 與全限定名

// 方式一:導入包下所有類(推薦常用類)
import com.vamei.society.*;

public class TestAgain {
    public static void main(String[] args) {
        Human p = new Human(180); // 簡短名
        System.out.println(p.getHeight());
    }
}
// 方式二:全限定名(解決同名類衝突、避免導入)
public class TestAgain {
    public static void main(String[] args) {
        com.vamei.society.Human p = new com.vamei.society.Human(180);
        com.vamei.creature.Human beast = new com.vamei.creature.Human(50);
    }
}

類路徑:讓 JVM 找到包

若包不在當前工作目錄,需指定 -classpath(或 -cp):

# 包根目錄為 /home/vamei/javapackage,工作目錄為 /home/vamei
javac -classpath /home/vamei/javapackage:. TestAgain.java
java  -classpath /home/vamei/javapackage:. TestAgain

長期項目建議配置環境變量 CLASSPATH 或構建工具管理。現代開發強烈推薦 Maven/Gradle,自動管理依賴、編譯輸出目錄、類路徑,彻底告別手動 -cp 痛苦。

可移植性基石:.class + JVM + 包管理

包目錄結構示意

Java「一次編譯,到處運行」依賴三大支柱:

  1. .class 字節碼:平台無關的中間表示。
  2. JVM:屏蔽硬件/OS 差異,提供統一運行抽象層。
  3. 包管理:組織 .class 為邏輯模塊,支持版本化、依賴解析、模塊化(JPMS/JDK9+)。

對比 C 需針對每平台重新編譯,Java 將移植複雜度前移至 JVM 實現者,應用開發者享受純邏輯移植紅利。

包設計原則:高內聚、低耦合、穩定依賴。業務垂直分層、通用庫水平分層,避免循環依賴。JDK 9+ 模塊系統更強制導出/開放包,編譯期檢查模塊邊界,大型系統治理利器。

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