https://docs.oracle.com/javase/tutorial/java/IandI/interfaceDef.html
Все абстрактные, стандартные и статические методы в интерфейсе неявно общедоступны, поэтому вы можете опустить публичный модификатор.
По сути,класс, который реализует интерфейс, предоставляет все методы интерфейса (кроме private) любому другому коду, который имеет видимость класса.
Было бы очень запутанным, если бы у класса был интерфейс, но методы наИнтерфейс будет виден какому-то коду, а не другому.Если вы хотите выборочно предоставлять методы, то вам, вероятно, следует использовать несколько интерфейсов.
public interface Profile {
generalMethod() ...
}
public interface SecretProfile extends Profile {
secretMethod() ...
}
Классы могут выбрать реализацию любого из интерфейсов (или даже обоих).Сторонний код может проверять наличие интерфейса и знать , что метод доступен или нет.