相当新的Java,但我想知道为什么包访问被认为比子类访问"更具限制性".也就是说,为子类提供对成员访问权限的每个访问修饰符也为整个包提供访问权限,并且存在提供包访问但不提供子类访问的修饰符.
这不是完全倒退吗?假设我在某个包中有一个类ControlledInstantiation.如果我有另一个类AlsoControlledInstantiation扩展ControlledInstantiation,我无法调用ControlledInstantiation的构造函数,除非我将其设置为protected或public.如果我将它设置为protected,那么包中的任何其他类都可以根据需要经常实例化它.因此,对于其超类(和语法,是)必须替代的东西获得与超类相同或更少的访问权限,而不是服务于不同但相关的函数的东西.这就像告诉你的孩子他不能玩你的钱包,因为你不会让你的邻居这样做,然后让你的邻居睡在你的房子,因为你的孩子.
所以我想我在问,这个决定的动机是什么,我怎么能绕过它呢?