为什么我要使用一个类变量(例如:static private int n),然后为它使用getter和setter ?



我正在阅读一个例子,其中有人创建了一个类变量(例如:static private int num;),但然后他使用getter和setter为该变量。

如果我想能够访问该变量,为什么我要使变量静态而不是仅仅使它成为一个实例变量(例如:private int num;)

static关键字与访问类外的变量无关,static只是一个在该类的所有对象之间共享的变量。Setter/getter对于从类外部(静态/非静态)访问私有变量是必需的。

考虑到你的意思是:

public class AlainQuestion {
    private static int alainQuestionActivity;
    private int answererAnswerActivity;
    public static int getAlainQuestionActivity() {
        return alainQuestionActivity;
    }
    public static void setAlainQuestionActivity(int alainQuestionActivity) {
        AlainQuestion.alainQuestionActivity = alainQuestionActivity;
    }
    public int getAnswererAnswerActivity() {
        return answererAnswerActivity;
    }
    public void setAnswererAnswerActivity(int answererAnswerActivity) {
        this.answererAnswerActivity = answererAnswerActivity;
    }

}

在上面,您将创建一个静态(或类)变量,以便该类的所有对象将具有相同的副本和实例变量,以便每个对象将具有自己的副本。

并回答为什么?-这被称为信息隐藏或数据封装。在这里阅读Oracle文档,并可以搜索许多其他好的在线文章。
您需要进行数据封装,以便没有人可以在未经您许可的情况下访问或修改您的变量或状态。例如,如果你想在任何人修改alainQuestionActivity之前设置一些规则或检查,那么你可以设置setAlainQuestionActivity()。如果你没有封装alainQuestionActivity,那么它就不可能。

  • 将变量设置为静态,以便类的所有对象都具有相同的副本。
  • 使用getter/setter封装变量,这样就不会有人像那样修改变量,你可以在setter中使用修改规则/检查。

希望这对你有帮助!

相关内容