是否有一种方法i
对同一类中的其他方法不可见?
private int i;
private void updateI(int i) {
this.i = i;
}
答案 0 :(得分:5)
否 - 一个类的所有成员彼此可见。
如果您发现班级中的某些成员不应该访问某个特定成员,可能表示您应该将您的班级拆分 - 请考虑是否可以对该信息进行分区很好,基本上。当然,这并不总是一个解决方案 - 当然,如果你发现有两个或三个相互关联的领域,并且只有一些方法应该触及,那通常表明你应该把它们放在自己的类型中。
答案 1 :(得分:1)
不,没有这样的访问修饰符。类级别是每个实例范围内最好的。
您可能需要考虑在单独的类中拆分类的状态,以便i
可以是较小类的字段。
示例:强>
class PositiveInt {
int i;
public void updateI(int i) {
if (i < 0) throw new IllegalArgumentException(...);
this.i = i;
}
// ...
}
class YourClass {
// No need to worry about 'i' staying positive in a large and complex class
PositiveInt i = new PositiveInt();
void updateI(int newI) {
i.updateI(newI);
}
}
答案 2 :(得分:1)
否......私人字段仅在所有方法的类中可见。 您可以从此类继承来隐藏字段。
答案 3 :(得分:0)
由于i
是类的成员变量,因此对其他非静态方法可见。如果您希望将其范围限制为方法,则它不能是类成员。
有关Java中变量作用域的简单介绍,您可以查看this page。
答案 4 :(得分:0)
为什么您希望类变量仅对特定方法可见。
只需在方法中声明变量,这样只能看到该方法:
private void updateI(int x) {
int i = x;
}