2017-08-03 15 views
1

我正在閱讀的一個消息來源說,關鍵字private表示一個方法或變量在類級別是私有的,而不是對象級別。關鍵詞「private」在課堂上是私密的,這意味着什麼?

含義在像這樣的代碼塊:

public class Weight2 implements Comparable<Weight2> 
{ 
    private int myPounds, myOunces; 

    public Weight2() 
    { 
     myPounds = myOunces = 0; 
    } 
    public Weight2(int x, int y) 
    { 
     myPounds = x; 
     myOunces = y; 
    } 

    public int compareTo(Weight2 w) 
    { 
     if(myPounds<w.myPounds) 
     return -1; 
     if(myPounds>w.myPounds) 
     return 1; 
     if(myOunces<w.myOunces) 
     return -1; 
     if(myOunces>w.myOunces) 
     return 1; 
     return 0; 
    } 
} 

一個1加權對象可以訪問不同的重量2對象的私有字段,而存取方法...而是通過只是說w.myPounds

澄清:

我想從那裏對象可以訪問不同對象的私有數據就知道了。它僅僅來自課堂內部嗎?或者這可以從驅動程序完成?

+1

[在Java中,默認,公共,保護和私有之間的區別]的可能重複(https://stackoverflow.com/questions/215497/in-java-difference-between-default-public-protected-和私人) – DevelopingDeveloper

+0

我的問題不是關於標籤之間的差異。這是關於班級內部「私人」的含義......更多技術細節未在您引用的線索中回答。 –

+0

「說到在課堂上給予隱私而不是對象級別,究竟意味着什麼?」這意味着「...相同類型的對象[可以]不使用訪問器方法訪問彼此的私有字段。」 –

回答

3

我正在閱讀的來源說,關鍵字private表示一種方法或 變量在類級別是私有的,而不是對象級別。

我不知道你的來源。這沒有錯,但也不清楚。

你可能指的是帶來了私人修改此信息JLS

第6章名

6.6.1。可存取

...的成員或構造聲明私有的,而且訪問是 允許當且僅當它發生的頂層 類的主體中(第7.6節)包圍成員的聲明或 構造函數。

關於:

所以,我的意思是要問什麼是,可以在相同類型的訪問每個 對方的私有字段沒有訪問方法的對象?

確實。

而且它與規範相當一致。
它不限制僅對當前實例訪問private成員。
因此,您可能會認爲此限制不存在,因此您可以爲當前實例或任何引用當前類的變量調用private方法。
在實例環境中它當然是靜態的。


作爲一個側面說明,你也應該考慮到級別的訪問權限:類和實例。
private static修飾符表示方法或變量在類級別是私有的。所以,你不需要任何實例來引用它。
雖然private修改器(不含static修飾符)表示方法或變量在實例級別是私有的。 所以你需要一個實例來引用它。


+0

謝謝......抱歉我的問題缺乏澄清......我的意思是說'w.myPounds'。 –

+0

不客氣。不要擔心:) – davidxxx

+0

你有一個好點 - upvoting優秀的內容是絕對公平的!乾杯! – GhostCat

0

不完全確定你的問題到底是什麼。不過,我會給你一個我想要的東西的基本總結。

如果一個變量或一個方法是私有那麼它可被訪問或在它存在的類中使用。

如果一個變量或一個方法是公共的話,就可以通過其他類訪問。

看看這個網站它可以幫助你,它肯定幫了我。

https://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html