2012-03-04 44 views
1

我有一個問題: 所以我有這行代碼(我從thenewboston TUTS得到了它):困惑理解類/對象:d

SharedPreferences getPrefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); 

我的問題是:我們做了什麼的這條線?我認爲我們從SharedPreferences創建了一個對象,但PreferenceManager類又如何呢?它是SharedPreference的超類嗎?它與OOP有一些關係嗎?

謝謝大家〜

PS:英語不是我的母語的語,很抱歉,如果我做了一些錯誤的:d

回答

2

PreferenceManager有一個名爲getDefaultSharedPreferences的靜態方法。這意味着您可以在不首先構建「PreferenceManager」實例的情況下調用該方法。靜態方法不能對類中的實例變量進行操作。

靜態方法可以創建對象的實例並返回它們。在這種情況下,靜態方法會創建一個新的SharedPreferences對象,並將其存儲在局部變量中。

想想看起來像這樣:一個對象的所有實例都存在一次靜態方法。每當你調用靜態方法時,無論每個對象可能知道什麼,它都會做同樣的事情。根據傳入的上下文,它將創建一個可用的SharedPreferences對象。

我希望這有助於!

+0

Thans先生:d 所以剛纔說getDefaultSharedPreferences不是一個靜態方法,我需要做到這一點: PreferenceManager一個; a.getDefaultSharedPreferences; 是真的嗎?先生? :D – 2012-03-04 05:19:12

+1

正確。有時候會有一個Singleton實現,所以你可以這樣做:PreferenceManger a = PreferenceManager.getInstance(); a.getDefaultSharedPreferences; – Kieveli 2012-03-06 15:16:58

1

PreferenceManager是一類。即:一種類型。如果你有'int i', int是類型,我是實例變量。

getDefaultSharedPreferences()是一個靜態方法 - 意味着它可以在沒有實例對象的情況下運行。這就是爲什麼它是''之前的類型。而不是一個變量/實例。

1

該代碼段創建名爲getPrefsSharedPreferences類型的新的變量,並將其值與PreferenceManager類的方法getDefaultSharedPreferences的返回值。

1

您實際上正在創建一個對象的實例。 SharedPreferences是要創建的對象類型,而變量getPrefs指向該實例。 PreferenceManager是一個已存在的對象,包含名爲getDefaultSharedPreferences的方法,返回一個SharedPreferences對象實例。

做出了榜樣,試着去了解這一點:

人克里斯= Room.pushOutSomebody();

:)