回答
是的,它可以。但是,每個.java
文件只能有一個公共頂級類,公共頂級類必須與源文件具有相同的名稱。
在一個源文件中包含多個類的目的是將相關的支持功能(內部數據結構,支持類等)與主公共類捆綁在一起。請注意,不要這樣做 - 唯一的影響是代碼的可讀性(或不可讀性)。
各不相同......一個這樣的例子是anonymous classes(當使用事件監聽器等時你會遇到那些)。
是的它可以,但是任何包中只能有一個公共類,因爲java編譯器創建與Public類名稱相同的.Class文件,因此如果它們多於1個公共類,它將是很難爲編譯器選擇什麼應該是Class文件的名字。
如果你想實現一個公共類,你必須在一個與該類名稱相同的文件中實現它。一個文件可以包含一個公共類和一些私有類。如果這些類只在公共類內部使用,這很有用。另外公共類也可以包含內部類。
儘管在單個源文件中有一個或多個私有類是好的,但我認爲使用內部類和匿名類更具可讀性。例如人們可以使用匿名類來定義一個公共類中的比較器類:
public static Comparator MyComparator = new Comparator() {
public int compare(Object obj, Object anotherObj) {
}
};
比較器類將通常需要一個單獨的文件,以便是公共的。這樣它就與使用它的類捆綁在一起。
通常,每個文件應該有一個類。如果你這樣組織事情,那麼當你搜索一個類時,你就知道你只需要搜索這個名字的文件。
當一個類最好使用一個或多個小型輔助類實現時,就是一個例外。通常,當這些類出現在同一個文件中時,代碼最容易遵循。例如,你可能需要一個小的「元組」封裝類來在方法調用之間傳遞一些數據。另一個例子是實現Runnable或Callable的'任務'類。他們可能很小,以至於他們最好與創建和調用它們的父類相結合。
除了匿名內部類,另一個用途是實現公共接口的私有內部類(see this article)。外部類可以訪問內部類的所有私有字段和方法。
這使您可以創建兩個緊密耦合的類,例如模型及其視圖,而不公開任何一個的實現。另一個例子是一個集合及其迭代器。
是的,儘可能多!
但是,每個文件中只有一個「公共」類。
我認爲它應該是「每個.java文件只能有一個非靜態頂級公共類」。 不是嗎?
.java文件被稱爲編譯單元。每個編譯單元可以包含任意數量的頂級類和接口。 如果沒有公共頂級類型,那麼編譯單元可以被命名爲任何東西。
//Multiple.java
//preceding package and import statements
class MyClass{...}
interface Service{...}
...
//No public classes or interfaces
...
在編譯單元中只能有一個公共類/接口。 c.u.必須完全按照這個公共頂級類型命名。
//Test.java
//named exactly as the public class Test
public class Test{...}
//!public class Operations{...}
interface Selector{...}
...
//Other non-public classes/interfaces
Important points about the main method - part 1
(關於部分涉及2類和它們的訪問級別的點數)
如果你想實現一個單身,這是一類在應用程序的執行過程中,只有一個內存實例在程序中運行,那麼實現單例的方法之一就是將私有靜態類嵌套到公共類中。然後內部私有類只在其公用方法訪問私有實例時被實例化。
看看這個wiki文章,
https://en.wikipedia.org/wiki/Singleton_pattern
概念需要一段時間來啃。
在.java文件中,只能有一個公共頂級類,其名稱與該文件相同,但可能有幾個公共內部類可以導出給所有人並訪問外部類的字段/方法,例如:AlertDialog.Builder(由'public static'修改)AlertDialog(由'public'修改)
是您可以在一個.Java文件中包含多個Class。但是你已經讓其中一個公開。並保存與公共類名稱相同的.java文件。當你編譯那個.java文件時,你將得到.java文件中定義的每個類的單獨的.class文件。
除此之外,在一個.java文件中定義多個類的方法太多了。
- 使用內部類的概念。
- 使用匿名類的概念。
是的! .java文件只能包含一個公共類。
如果你希望這兩個類是公開的,它們必須放在兩個.java文件中:A.java和B.java。
是的,你可以在一個.java文件中有多個類。其中至多有一個可以公開。其他人是封裝私有的。他們不能是私人的或受保護的。如果一個人是公開的,那麼該文件必須具有該類的名字。否則,可以將ANYTHING作爲其名稱給予該文件。
在一個文件中有許多類意味着這些類在同一個包中。因此,該包內但不包含在該文件中的任何其他類也可以使用這些類。而且,當該包被導入時,導入類也可以使用它們。
如需更詳細的調查,您可以訪問我的博客文章here。
是200%,
例子:
class A {
void methodDeclaration() { System.out.println("!!!"); }
}
class B {
public static void main(String[] args) {
new A().methodDeclaration();
}
}
是的,你可以創建多個公共類,但它必須是一個嵌套類。
public class first {
public static void main(String[] args) {
// TODO Auto-generated method stub
}
public class demo1
{
public class demo2
{
}
}
}
只能有一個公共類頂級類的文件。該公共類的類名稱應該是文件的名稱。它可以有許多公共的內部類。
您可以在單個文件中包含許多類。對於不同層次的文件級視野的限制如下:
頂級類:
1公共類
0私有類
任意數量的默認/保護類
內類別:
任何數量的內部類別具有任何知名度(默認,私人,保護,公共)
Ple如果我錯了,我會糾正我。
- 1. 可以將單個xml文件鏈接到多個java類嗎?
- 2. 可以有多個pretty-faces.xml文件嗎?
- 3. 我可以有多個php.ini文件嗎?
- 4. Log4net可以有多個appender寫入同一個文件嗎?
- 5. 一個類可以在Objective-C中有多個類別嗎?
- 6. 一個域可以有多個Cookie嗎?
- 7. 你可以將多個文件合併成一個文件嗎?
- 8. java中一個類可以擁有多少個內部類
- 9. @ @接口可以有多個類嗎?
- 10. 在java中,我可以在一個文件中有多個類/對象?
- 11. Java - Hibernate一個類可以引用多個類中的一個
- 12. 我可以在另一個類中包含一個帶有類的文件嗎?
- 13. 多個base64文檔可以存儲在一個文件中嗎?
- 14. 一個類可以有多個線程函數嗎?
- 15. 一個aspx頁面可以有多個aspx.cs類來繼承嗎?
- 16. 有多個ActiveRecord`belongs_to`指向同一個類可以嗎?
- 17. 可以在IntelliJ的同一個文件夾中有多個src文件夾嗎?
- 18. 可以有多個Dispatcher.BeginInvoke嗎?
- 19. 一個類可以是多個類的子類嗎?
- 20. 你可以有多個domready事件嗎?
- 21. 可以運行多個php文件嗎?
- 22. 一個文件可以用Java中的多個字符編碼嗎?
- 23. 一個http請求可以調用多個css文件嗎?
- 24. Scala類可以擴展多個類嗎?
- 25. 我可以用一個類名指定多個CSS類嗎?
- 26. 一個接口類可以由多個類實現嗎?
- 27. 在Java中,同一個類可能有兩個或多個文件?
- 28. 使用繼承來將一個類「拆分」爲多個文件可以嗎?
- 29. 多個html文件可以使用單個javascript文件嗎?
- 30. 單個PeerConnection可以有多個DataChannel嗎?
我認爲這樣做是個不錯的主意,如果你想讓這些額外的類保持私有狀態,那麼以後可以完全改變它們,而不會意外地使用這些類。 – 2009-06-09 05:49:14
它在1.0版本中兼容(在嵌套類之前)。這是該語言的一大錯誤。使用它的最大優勢是IDE有無可救藥的文件處理能力。 – 2009-06-09 08:24:39
每個文件一個公共*頂級*類。只要你喜歡,每個文件可以有許多公共的內部類。 – erickson 2009-06-09 12:43:49