假设我有一个带有内部类的外部类.内部类有四个字段,包含所有可能的访问修饰符.
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;
}
}
Run Code Online (Sandbox Code Playgroud)
内部类是私有的,所以我不能在Outer类之外创建它的实例.在Outer类中,如果我创建内部类的实例并尝试更改每个字段的值,我将成功地执行此操作.所以我看到上述字段的访问修饰符没有任何意义.在那儿?
编辑:主要问题是: 我应该为私人内部成员选择哪些访问修饰符?内部类不仅可以实现接口.我可以把一些带有逻辑的困难结构放进去.
访问修饰符在继承方面有发言权.扩展您所谈论的类的另一个内部私有类没有外部类的特权.
public class Main {
private class Test {
protected int hello;
}
private class TestNext extends Test {
private TestNext() {
this.hello = 1;
}
}
}
Run Code Online (Sandbox Code Playgroud)
将编译,但如果hello是私人的,它不会.