簡體   English   中英

公共和私有 class 在同一個文件中

[英]public and private class in the same file

我在同一個 java 文件中創建了一個公共和私有 class。 它沒有被編譯。

但是,如果我在沒有任何訪問修飾符的情況下保留公共 class 和 class ,它將被編譯。

這是什么原因?

頂級私有 class 是胡說八道,因為沒有其他 class 可以訪問這個 class。 這就是為什么你得到編譯錯誤..

JLS 指出;

訪問修飾符 protected 和 private 僅適用於直接封閉的 class 聲明(第 8.5 節)中的成員類,並在第 8.5.1 節中討論。

如果您嘗試創建一個 .java 文件結構,以便在根結構中有多個公共 class 定義或私有 class 定義,如下所示:

public class SomeClass { ... }
public class SomeOtherClass { ... }

或者

private class SomePrivateClass { ... }

會有錯誤。 但是,您可以在公共 class class 中定義您的私有 class,如下所示:

public class SomePublicClass {
    private class SomePrivateClass { ... }
    ...
}

java 文件中只有一個基礎 class ,這將編譯。

編輯:根據 Joachim Sauer 的評論更正了有關合法 class 結構的信息。

將外部類指定為private是非法的。 如果沒有訪問修飾符,它默認只能從同一個 package 訪問。

更多信息: http://en.wikibooks.org/wiki/Java_Programming/Access_Modifiers

您不能將 class 聲明為私有,除非包含在另一個 class 中。 這是規范, JLS - 8.1.1 Class 修飾符

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM