【发布时间】:2013-10-31 01:03:10
【问题描述】:
在方法中,我们可以创建一个作用域,来限制对某些变量的访问。
void func() {
{
int num = 3;
}
// num is not accessible here
}
在一个类中,我们如何创建一个范围(或类似的结构),使得某些字段只能通过某些方法访问?
class MyClass {
private String myHeart = "pure";
void method_friendly {
// should able to access myHeart
}
// ---------- methods under this line should not access myHeart
void method_evil {
// please don't touch myHeart
}
}
【问题讨论】:
-
一个问题。在什么情况下,这样的东西有用?
-
这确实需要分解成更多的类,带有私有字段。内部类不会这样做。
-
@Christian,我知道这可能不是一个好的设计。但我有时会遇到这样的情况。例如,某些字段对结构的完整性至关重要。我只希望某些方法能够改变它们。原因(1)我自己更清楚维护,(2)其他方法在被子类覆盖后可能会破坏它的完整性。
-
@SeanOwen,
myHeart可以说比私有字段更“私有”。我不想创建另一个类,这样我就必须以某种方式公开它,因为一个类只能是公共的或 /*package*/。我正在考虑做内部阶级。为什么说不可能呢? -
@SeanOwen,我做了一些试验。我猜为什么内部类不起作用,因为(1)如果内部类没有被初始化,外部类不能访问它,(2)如果内部类已经初始化,外部类甚至可以访问它的私有成员.
标签: java class variables scope