【发布时间】:2014-10-02 00:39:57
【问题描述】:
假设我有一个外部类,里面有一个内部类。内部类有四个字段,其中包含所有可能的访问修饰符。
class Outer {
private class Inner {
public int publicField;
protected int protectedField;
int packagePrivatefield;
private int privateField;
}
void doSomethingWithFields() {
Inner inner = new Inner();
inner.publicField = 111;
inner.protectedField = 111;
inner.packagePrivatefield = 111;
inner.privateField = 111;
}
}
内部类是私有的,所以我不能在外部类之外创建它的实例。在外部类内部,如果我创建内部类的一个实例并尝试更改每个字段的值,我将成功地做到这一点。所以我看到上述字段的访问修饰符没有意义。有吗?
编辑:主要问题是: 我应该为私有内部类的成员选择哪些访问修饰符? 内部类不仅可以实现接口。我可以把一些有逻辑的复杂结构放进去。
【问题讨论】:
-
我倾向于使用相同的修饰符,就好像我的类不是私有内部类一样。这至少记录了不应从外部调用此方法,而应从外部调用此方法。它还有助于将类重构为顶级类。
-
很抱歉,assylias 的重复是无效的:这个问题专门针对 fields,而标记为重复的问题涉及 methods,而他们的推理完全不同。
标签: java