我明白,除非實例變量被聲明爲私有的,否則它們可以被其他類引用和更改。我知道爲什麼這會成爲一個問題。(Java)如果不能從其他類引用實例變量,則聲明實例變量的點是什麼,除非它們是靜態的?
然而,我不明白爲什麼我們應該聲明這些變量是私人的,如果他們不能從其他類引用而不被聲明爲靜態的。
只要不聲明它們是靜態的,我們能完成同樣的事情嗎?
我很抱歉如果這個問題的答案很明顯,但我最近剛剛開始學習Java語言和麪向對象的一般。
感謝您的幫助!
我明白,除非實例變量被聲明爲私有的,否則它們可以被其他類引用和更改。我知道爲什麼這會成爲一個問題。(Java)如果不能從其他類引用實例變量,則聲明實例變量的點是什麼,除非它們是靜態的?
然而,我不明白爲什麼我們應該聲明這些變量是私人的,如果他們不能從其他類引用而不被聲明爲靜態的。
只要不聲明它們是靜態的,我們能完成同樣的事情嗎?
我很抱歉如果這個問題的答案很明顯,但我最近剛剛開始學習Java語言和麪向對象的一般。
感謝您的幫助!
這是一個誤解。 private
和static
與彼此沒有任何關係。這將說明如何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 modifiers和class members
@unnown所以......我必須理解這一點,還是你想介紹一下你想說的話?沒有任何解釋,只是傾銷你目前的想法並不完全有幫助。薄煎餅 – Paul
我不明白你的問題。你能用代碼示例說明你的問題嗎? –
根據定義,'static'變量不是實例變量,因爲它們是在類的所有實例之間共享的。 –
如果你不聲明他們是私人的,我可以做一個類在同一個包中,並從那裏看到他們 – Gavriel