何时使用字段变量?

sar*_*Fly 0 java variables

在什么情况下你会使用字段变量而不是局部变量?我发现在类中的2个或更多方法中使用变量时有点困难.我倾向于使用局部变量并将它们传递给另一个方法.

谢谢,

莎拉

Mar*_*ers 7

字段表示与您的类的实例相关的某种状态.例如,a BankAccount可以有一个balance字段.

您永远不应该使用字段来简化从一个方法到另一个方法的数据传递.这根本不是它的目的.这样做也会使您的方法本质上不安全或需要同步.

局部变量只是用于支持方法执行操作的临时数据存储.例如,

public void addInterest(double rate) {
    double toAdd = rate * balance;
    logTransaction("Interest", toAdd);
    balance += toAdd;
}
Run Code Online (Sandbox Code Playgroud)

toAdd here作为一个字段是没有意义的,因为它是临时的操作,而不是帐户状态的一部分.


Kal*_*see 7

在面向对象的术语中,变量是否有意义作为对象的属性?如果是这样,你应该把它变成一个字段变量.如果没有,它可以去任何一种方式.

记住单一责任原则 - 精心设计的类应该只有1个责任,因此只有1个改变的理由.