考虑以下情况:
public class A {
public A() { b = new B(); }
B b;
private class B { }
}
从 Eclipse 中的警告中,我引用:java 编译器通过合成访问器方法模拟构造函数 AB()。我想编译器现在继续为 B 创建一个额外的“水下”构造函数。
我觉得这很奇怪:为什么 B 类在 A 中作为 ako 字段不可见?并且:这是否意味着 B 类在运行时不再是私有的?并且:为什么 B 类的受保护关键字的行为不同?
public class A {
public A() { b = new B(); }
B b;
protected class B { }
}