2016-01-23 49 views
-1

我明白,除非實例變量被聲明爲私有的,否則它們可以被其他類引用和更改。我知道爲什麼這會成爲一個問題。(Java)如果不能從其他類引用實例變量,則聲明實例變量的點是什麼,除非它們是靜態的?

然而,我不明白爲什麼我們應該聲明這些變量是私人的,如果他們不能從其他類引用而不被聲明爲靜態的。

只要不聲明它們是靜態的,我們能完成同樣的事情嗎?

我很抱歉如果這個問題的答案很明顯,但我最近剛剛開始學習Java語言和麪向對象的一般。

感謝您的幫助!

+1

我不明白你的問題。你能用代碼示例說明你的問題嗎? –

+2

根據定義,'static'變量不是實例變量,因爲它們是在類的所有實例之間共享的。 –

+1

如果你不聲明他們是私人的,我可以做一個類在同一個包中,並從那裏看到他們 – Gavriel

回答

0

這是一個誤解。 privatestatic與彼此沒有任何關係。這將說明如何private作品(雖然這是相當醜陋的代碼 - 我只是試圖讓事情變得簡單,請不要抨擊我認爲):在另一方面

class PublicAttribute{ 
    public Object someObject; 
} 

class PrivateAttribute{ 
    private Object someObject; 
} 

PublicAttribute pub = new PublicAttribute(); 
pub.someObject = "Hello World"; //valid 

PrivateAttribute priv = new PrivateAttribute(); 
priv.someObject = "Hello World"; //invalid, we can't access someObject, since it's private 

static是這樣工作的:

class SomeObject{ 
    public static String staticString; 
    public String notStatic; 
} 

SomeObject.staticString = "Hello World"; //valid 
SomeObject.notStatic = "Hello World"; //invalid, we need an instance 
new SomeObject().notStatic = "Hello World"; //valid, since we access the attribute of an object 

這兩個nutsandbolts-教程應該有所幫助:access modifiersclass members

+0

@unnown所以......我必須理解這一點,還是你想介紹一下你想說的話?沒有任何解釋,只是傾銷你目前的想法並不完全有幫助。薄煎餅 – Paul

相關問題