I suggest introducing the keyword "semifinal" (or some such suitable variant). The use of this keyword for a method would allow private and package visible classes to override the method, but block protected and public visible classes from overriding them.
The motivation is that often it is desirable to declare a method public and final to allow non-package classes to call the method while preventing them from overriding the method (because the subclass might break the base class). However, declaring a method as final also prevents private and package classes from overriding such methods, which is commonly needed to create wrapper classes. Introduction of the semifinal keyword allows finer control over the notion of finality.