public class one //宣告一個公開的類別名稱為one,而且檔名必須命名為one.java為何Java程式語言的公開類別名稱與檔名必須相同呢!?理由為何!?請註明出處~~多謝!!
2005-10-16 05:27:10 · 1 個解答 · 發問者 ? 6 in 電腦與網際網路 ➔ 程式設計
不好意思~可能我的表達不夠清楚~~
我想要問的是Java當初在建構的時候,是考量什麼樣的因素,而要律定公開類別名稱(class)與檔名相同呢!??!
2005-10-17 21:07:10 · update #1
這個在講得比較詳細的 Java 基礎書裡會提到。
一個【.java】檔裡,只能有一個 class 能設成 public。
但是一個【.java】檔裡,可以有多個非 public 的 class。
在經過 javac 後,各個 class 還是分別用不同的【.class】檔存起來。
宣告一個公開的類別名稱為 one (其實可以不用 public),
檔名必須命名為【one.java】是因為裡面有個
「public static void main(String[] args) { ... }」,
那是這個程式的起始點,檔名跟 class 名一樣,
java 才知道程式是要從那裡開始。
另外一面,也方便後面維護程式的人 trace 程式,
看到【one.java】,就會知道要找「class one」裡
有個「public static void main(String[] args) { ... }」的地方是程式起點。
例如有個【one.java】:
================ 【one.java】開始 ================
class one {
public static void main(String[] args) {
//↑因為這行在 class one 裡,所以檔名要是 one.java
one a = new one();
a.class_print();
two b = new two();
b.class_print();
}
void class_print() {
System.out.println("in class one");
}
}
class two {
void class_print() {
System.out.println("in class two");
}
}
================ 【one.java】結束 ================
經過「javac one.java」後,會產生【one.class】跟【two.class】。
因為「public static void main(String[] args) { ... }」在 class one 裡,
所以執行的時候是「java one」。
2005-10-24 22:40:08 補充:
基於怎樣的考量?
因為 main() 是 Java 程式的起點,設為 public ,是因為存取限制的問題。在這裡 public 是針對 main() 為必要。
但是,沒有說包含 public static void main() 的 class 也必須是 public class。
看看我後面舉的例子【one.java】裡的「class one」就沒用 public,這程式一樣可以執行。
2005-10-24 22:42:18 補充:
Java 的律定是【.java】檔,如果有一個 class 裡,包含「public static void main()」,則【.java】的檔名要跟那個 class 名一樣。
所以如果有個一個 class 裡面,包含的是「void main()」,而不是「public static void main()」,則那個【.java】的檔名,大可不必跟 class 名一樣。
2005-10-16 10:23:06 · answer #1 · answered by Ike 3 · 0⤊ 0⤋