Campbell Ritchie wrote:If you aren't using Java10‑type private methods, then all interface methods are public and must only be overridden with public access.
This is actually one of by biggest peeves about Java. I wish that virtual methods had the same access level as the interface they were declared in, whether or not you specify that access level explicitly.
Let's say I have a package containing a package private interface, because that interface is only used within the package. It also contains a public class that implements that interface. As it stands, my class MUST expose the methods declared in the interface, even though I would have liked them to remain private to the package.