【问题标题】:Confused in understanding Class/Object :D对理解类/对象感到困惑:D
【发布时间】:2012-03-22 02:06:14
【问题描述】:

我有一个问题: 所以我有这行代码(我是从新波士顿的 tuts 那里得到的):

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

我的问题是:我们在这一行做了什么?我认为我们从 SharedPreferences 创建了一个对象,但是 PreferenceManager 类呢?它是 SharedPreference 的超类吗?它与 OOP 有什么关系吗?

谢谢大家~

PS:英语不是我的母语,如果我犯了一些错误,请见谅:D

【问题讨论】:

    标签: android oop class


    【解决方案1】:

    PreferenceManager 有一个名为 getDefaultSharedPreferences 的静态方法。这意味着您可以在不首先构造“PreferenceManager”实例的情况下调用该方法。静态方法不对类中的实例变量进行操作。

    静态方法可以创建对象的实例并返回它们。在这种情况下,静态方法创建了一个新的 SharedPreferences 对象,您将其存储在一个局部变量中。

    可以这样想:对于一个对象的所有实例,一个静态方法只存在一次。每次调用该静态方法时,无论每个对象可能知道什么,它都在做同样的事情。根据传入的上下文,它将创建一个您可以使用的 SharedPreferences 对象。

    我希望这会有所帮助!

    【讨论】:

    • Thans Sir :D 所以只是说 getDefaultSharedPreferences 不是静态方法,我需要这样做:PreferenceManager a; a.getDefaultSharedPreferences;先生是真的吗? :D
    • 正确。有时会有一个 Singleton 实现,所以你会做这样的事情: PreferenceManger a = PreferenceManager.getInstance(); a.getDefaultSharedPreferences;
    【解决方案2】:

    PreferenceManager 是一个类。即:一种类型。如果你有'int i;' int 是类型,i 是实例变量。

    getDefaultSharedPreferences() 是一个静态方法——这意味着它可以在没有实例对象的情况下运行。这就是为什么它是 '.' 之前的类型。而不是变量/实例。

    【讨论】:

      【解决方案3】:

      这段代码的 sn-p 创建了一个名为 getPrefsSharedPreferences 类型的新变量,并将其值设置为 PreferenceManager 类的方法 getDefaultSharedPreferences 的返回值。

      【讨论】:

        【解决方案4】:

        您实际上是在创建一个对象的实例。 SharedPreferences 是您正在创建的对象类型,变量 getPrefs 引用该实例。 PreferenceManager 是一个已经实例化的对象,包含名为“getDefaultSharedPreferences”的方法,返回一个 SharedPreferences 对象实例。

        举个例子,试着理解一下:

        人类克里斯 = Room.pushOutSomebody();

        :)

        【讨论】:

          猜你喜欢
          • 2013-05-15
          • 2020-04-19
          • 2014-11-28
          • 2018-03-05
          • 1970-01-01
          • 1970-01-01
          • 2012-03-01
          • 2018-11-13
          • 2021-10-22
          相关资源
          最近更新 更多