2012-05-24 40 views
2

我對Java相對比較陌生,並且讀過一些關於私有和公共acccess修飾符的內容。我想在這個話題中一次又一次地消除任何混淆,因爲我覺得我沒有把握最好。在變量私有和公共java訪問修飾符基礎知識

訪問修飾符

請糾正我,如果我錯了,一個變量是公共的默認值。如果訪問修飾符設置爲public或根本不設置,則來自同一項目的其他類可以訪問整數和/或修改它。如果它是私人的而不是外部不可見的,並且不能被創建它之外的類訪問。在班

訪問修飾符的類

Accesss改性劑,我似乎並不完全瞭解。據我的理解,如果我從不在同一個類中的方法調用私有方法,那麼它將無法工作。如果它是公開的,它會呢?

有什麼我失蹤或不正確理解?

我很欣賞這方面的幫助。

+0

變量只存在內部功能訪問 屬性政府物業。你的意思是_fields_ – SLaks

+2

@SLaks:不,字段也是變量。請參閱http://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.12.3 –

+0

最後一個問題,類,方法和變量都可以具有訪問修飾符,是否正確? – AnchovyLegend

回答

3

請糾正我,如果我錯了,默認情況下變量是公共的。

你錯了。假設你指的是字段,默認情況下,它們具有「包」訪問權限,不能明確表示。 本地變量沒有訪問控制的概念 - 它們只存在於方法的上下文中,所以不能從其他任何地方引用。

如果訪問修飾符設置爲public或根本沒有設置,那麼來自同一項目的其他類可以訪問整數和/或修改它。

如果設置公共,然後任何代碼可以訪問它。

如果它是默認(包)訪問,則同一包中的任何代碼都可以訪問它。

在類中訪問修飾符,我似乎沒有完全理解。據我的理解,如果我從不在同一個類中的方法調用私有方法,那麼它將無法工作。如果它是公開的,它會呢?

這是非常正確的,是的。

我建議您閱讀Java tutorial on all of this,並諮詢language spec section 6.6瞭解更多詳情。

+0

感謝您的回覆,不知道;) – AnchovyLegend

1

您可以在Oracles網站上找到4個修飾符here的信息。

如果您未指定修飾符,則說它是默認的,這意味着只有同一包中的任何代碼才能訪問它。

如果設置爲公共,則任何包中的任何代碼都可以訪問它。

1

其實在Java中有四個不同的訪問修飾符,私有,公有,保護和封裝形式。 「如果我錯了,請糾正我,默認情況下一個變量是公開的 - 」 - 如果沒有聲明不同,那麼你在這裏是錯誤的,它具有與包相關的訪問權限。如果它被設置爲公開,那麼即使在原始軟件包之外,它也可以被其他類修改。這個網站 - http://javapapers.com/core-java/access-modifiers-in-java-explain/ - 可以爲您提供有用的提示。事實上,一旦你閱讀了更多關於封裝等面向對象概念的內容,這很容易。然後您將瞭解訪問修飾符的用途(以確保數據的整數)。

3

Here's關於這個問題的一個很好的文檔。

有四種訪問等級:

  1. 私人:只有類(甚至沒有後代)都可以訪問。
  2. 保護:只有該類及其後代和類在同一個包中才可以訪問。
  3. package-private(無說明符) - 只有同一個包中的類纔可以訪問 - 甚至不在同一個包中的子類也不能訪問。
  4. public:一切都可以訪問。

對於這兩個類成員變量和方法,默認的訪問是包私有。

+1

受保護的修飾符還允許訪問相同包中的類。 – GriffeyDog

+0

就這樣。不是我的一天。謝謝@ GriffeyDog - 我已更正。 – SirPentor

0

訪問修飾符:

  • 公共 - {可以訪問項目的任何地方}

    私人 - {只能訪問類中}

    保護 - {可以在訪問包和子類}

    默認 - {可以在包裝內訪問}

非訪問修飾符:

  • 靜態 - {創建類變量和方法}

    決賽 - {創建敲定類,變量和方法}

    摘要 - {用於創建抽象方法和類}

    Sy nchronized - {線程}

要了解更多關注該link

0

Java提供了一些訪問修飾符來設置類,變量,方法和構造函數的訪問級別。四種訪問級別是:

默認值:可見包。不需要修飾符。

私人:僅對班級可見。

公共:可見的世界。所有類和包。

受保護:可見包和所有子類。

如果程序員未指定訪問修飾符,則使用默認訪問修飾符。

0

私有和公共java訪問specifiers.in java,私人訪問說明符它指定access.private就像自己的家庭財產,只能使用哪些家庭屬於。這意味着內部的類,方法和變量可以使用。 公共就像政府屬性,意味着每個人都可以訪問屬性而不需要任何令牌

+0

你能編輯這個嗎?這很難閱讀。 – Robert

0

私有和公共java訪問說明符in java,它指定訪問的私有訪問說明符。

私人就是這樣只能使用類,方法內 belongs.that指家庭和變量可用於

自己的家庭屬性。

市民喜歡,這意味着每個人都可以無需任何令牌