首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java 基礎觀念釐清:main 方法、public 類別限制與多檔案編譯執行

     編輯:程式設計疑難解答

初學 Java 常見三個疑惑:為何程式碼中出現兩個 main?一個檔案只能有一個 public class?多個 .java 檔如何組合執行?

疑問 1:一個類別能有多個 main 嗎?

  • 簽名固定: public static void main(String[] args) 是 JVM 啟動程式的標準進入點,每個類別最多只能有一個這個簽名的方法(否則編譯錯誤:重複定義)。
  • 多載允許: 同一類別可定義其他 main 多載,如 void main()、void main(int x),但 JVM 不會自動呼叫它們。
  • 多類別各有一個 main: 專案中多個類別各自擁有 public static void main(String[] args) 完全合法。執行時透過 java ClassName 指定啟動哪個類別的 main。

疑問 2:為何一個 .java 只能有一個 public class?

  • 編譯單元規則: Java 編譯器要求:若檔案中有 public class,其名稱必須與檔案名稱完全一致(不含 .java)。因為編譯器以檔案名稱定位公共類別,若有兩個 public class,編譯器無法決定輸出哪個 .class 檔案名稱。
  • 非 public 類別無限制: 同一檔案可包含多個 class (package-private),編譯後各產生對應 .class 檔案。

疑問 3:多檔案如何組合執行?

  • 編譯: javac A.java B.java 或 javac *.java,產生 A.class, B.class。
  • 執行: java A (含 main 的類別)。JVM 會自動載入 A 依賴的 B 類別(需在同一 classpath 下)。
  • 套件管理: 實務上將相關類別歸屬同一 package,使用建構工具 (Maven/Gradle) 管理編譯、打包、依賴。

範例:跨類別呼叫

// B.java
package com.example;
public class B {
    public void sayHi() { System.out.println("Hello from B"); }
}

// A.java
package com.example;
public class A {
    public static void main(String[] args) {
        B b = new B(); // 建立 B 實例
        b.sayHi();     // 呼叫 B 方法
    }
}

理解這三點,Java 專案結構與執行機制就不再神秘。

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