title: When would I use package-private in Java?
body: <p>I love access control in any language, but I find that in Java I almost never (if ever) use the <a href="http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html" rel="noreferrer">package-private</a> access modifier (or lack thereof).</p>
  
  <p>I realize that inner classes can be <code>private</code>, <code>protected</code>, or <code>package-private</code>, but outer classes can only be <code>package-private</code> or <code>public</code>. Why can an outer class be <code>package-private</code> but not <code>protected</code>? What is the benefit of restricting classes/methods/fields to be seen by the entire package, but not subclasses?</p>