我在Java中有以下代码:
package a;
public classs ClassInOtherPackage{
protected void protectedMethod(){}
protected class protectedInnerClass {}
}
package b;
import a.*;
public class MyClass extends ClassInOtherPackage{
public MyClass(){
MyClass x = new MyClass();
x.protectedMethod(); //<-- This one ok
//UPDATED: Declaration is ok
MyClass.protectedInnerClass y; //<-- This one ok
//UPDATED: Only when instantiated is not allowed, why?
y = x.new protectedInnerClass(); //<-- Not allow when instantiated.
}
}
请参阅 Java 文档:
“受保护的修饰符指定该成员只能在其自己的包中访问(与包私有一样),此外,它的类在另一个包中的子类也可以访问。”
为什么我不能实例化如上所示的内部受保护类?