a class and its constructor are not the same. a protected constructor is accessible to subclasses of the declaring class (that's Inner). InnerProtect2 does not extend Inner, nor is it in the same package. so no, "it shodnt". a protected member class is accessible to subclasses of the declaring class. that is, class Inner is accessible to InnerProtect2, but its constructor ...