I would do this by creating a base class with the default visibility, and then extend it with the public final class, which external classes can call but not extend. For example:
class MyBase { public void doSomething() { ... } } public final class PublicBase extends MyBase { } class ExtendedBase { @Override public void doSomething() { ... } }
highlycaffeinated
source share