gpt4 book ai didi

java - 类的不同方法更改成员数据与全局变量有何不同

转载 作者:行者123 更新时间:2023-12-02 13:40:47 24 4
gpt4 key购买 nike

假设,我有一个名为 i 的成员变量,我正在类中的三个不同方法中更改它的值。

那么,每次i的起始值都不一样?这与使用全局变量有什么不同,全局变量是一个强烈的禁忌,并且令人不悦?

public class ChangingMember {
int i = 1;
public static void main(String[] args) {
ChangingMember obj = new ChangingMember();
System.out.println(obj.i);
obj.test();
obj.test1();
obj.test2();
System.out.println(obj.i);
}

public void test() {
i++;
}

public void test1() {
i++;
}

public void test2() {
i++;
}

}

最佳答案

您需要访问该对象才能调用这些方法。这意味着你对它有明显的依赖。它需要传递给任何使用它的类。只有明确授予该对象访问权限的代码才能更改该变量。这与全局变量不同。

void foo(ChangeingMember member) { // <-- dependency
member.test1();
}

void bar() { // <-- no dependency
SomeGlobal.someMethod();
}

如果创建一个对象:

ChangingMember obj = new ChangingMember();

您仍然可以控制它的状态。只有当您授予其他代码访问该对象的权限时,状态才能更改:

foo(obj); // Giving 'foo' access to 'obj'

但是任何东西都可以访问全局变量。没有封装。

关于java - 类的不同方法更改成员数据与全局变量有何不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42749204/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com