保护int,仅对指定方法可见

时间:2014-12-09 13:24:24

标签: java private encapsulation

是否有一种方法i对同一类中的其他方法不可见?

private int i;

private void updateI(int i) {
  this.i = i;
}

5 个答案:

答案 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;
     }