「パブリック」または「保護された」メソッドは、インターフェイスを実装しないプライベートのネストされたクラスには何の違いもありません..?
入れ子になったプライベート クラスがインターフェイスを実装していないか、クラスから継承していない場合、そのメソッドの修飾子については、「パブリック」または「保護」されているか、修飾子がなくても違いはないように見えます。コンパイラがそれらに対してのみ「プライベート」を許可する場合は、より理にかなっています。では、なぜJavaはそれらを許可するのでしょうか?
class Enclosing {
private class Inner {
private void f1() {}
void f2() {}
protected void f3() {}
public void f4() {}
}
void test() {
Inner o= new Inner();
o.f1();
o.f2();
o.f3();
o.f4();
}
}