2011-01-12 70 views
15

我在兩個不同的包中有兩個類。對於一個類,我定義了一個構造函數,但沒有爲它設置訪問修飾符。我想在另一個包中實例化這個類的對象,並得到錯誤'the constructor xxx() is not visible'。默認情況下,Java構造函數是不是公共的?

如果我將訪問權限定義爲public,那很好。我認爲構造函數默認是公開的?

+0

默認情況下,類構造函數是包私有的。枚舉構造函數默認是私有的。 – Boann 2016-10-18 00:48:45

回答

18

沒有訪問說明符!=公共

無修飾是包私有。檢查doc

+0

答案沒問題,但鏈接的文檔沒有提及默認的c'tors。 – 2013-10-29 12:43:22

13

不,他們不是。它們默認具有軟件包可見性。

2

當您不寫入訪問修飾符時,它被設置爲默認值,這意味着私有包。例如。包外沒有課程可以訪問它。

1

不,他們有默認的訪問說明符。 即它們具有包可見性。

1

您可以在構造函數的聲明中使用訪問修飾符來控制哪些其他類可以調用構造函數。 如果您沒有將構造函數明確聲明爲public,則只會在聲明它的包(包訪問)的相同包中可見。

7

默認訪問是(err ...)默認訪問。也被稱爲包私人。考慮一下:如果它們默認爲public,那麼你如何表示構造函數不是public,但實際上是包私有的?沒有關鍵字與私有包相對應,用於表明這一點。

1

在一個類中,沒有訪問修飾符的所有方法都具有包可見性。但是,在接口方法中總是有公開的可見性。

相關問題