title: Inheritance of abstract methods with package access
body: <p>According section "8.1.1.1" of JLS we have:</p>
  
  <p>A class C has abstract methods if either of the following is true:</p>
  
  <p>• Any of the member methods (§8.2) of C - either declared or inherited - is
  abstract.</p>
  
  <p>• Any of C's superclasses has an abstract method declared with package access,
  and there exists no method that overrides the abstract method from C or from
  a superclass of C</p>
  
  <p>It is interesting, why do we have second option here. In particular, why do we have exactly "package access". And what about "public" or "protected" methods?</p>