1. Обзор
Начиная с Java 9 к интерфейсам в Java можно добавлять приватные методы . В этом кратком руководстве давайте обсудим, как мы можем определить эти методы и их преимущества.
2. Определение частных методов в интерфейсах
Частные методы могут быть реализованы статическими
или нестатическими
. Это означает, что в интерфейсе мы можем создавать приватные методы для инкапсуляции кода как из стандартных
, так и из статических
сигнатур общедоступных методов.
Во-первых, давайте посмотрим, как мы можем использовать частные методы из методов интерфейса по умолчанию:
public interface Foo {
default void bar() {
System.out.print("Hello");
baz();
}
private void baz() {
System.out.println(" world!");
}
}
bar()
может использовать приватный метод baz()
, вызывая его из метода по умолчанию.
Далее давайте добавим статически определенный закрытый метод в наш интерфейс Foo :
public interface Foo {
static void buzz() {
System.out.print("Hello");
staticBaz();
}
private static void staticBaz() {
System.out.println(" static world!");
}
}
Внутри интерфейса другие статически определенные методы могут использовать эти закрытые статические методы.
Наконец, давайте вызовем определенные методы по умолчанию и статические методы из конкретного класса:
public class CustomFoo implements Foo {
public static void main(String... args) {
Foo customFoo = new CustomFoo();
customFoo.bar();
Foo.buzz();
}
}
На выходе получается строка «Hello world!» от вызова метода bar()
и «Hello static world!» от вызова к методу buzz() .
3. Преимущества закрытых методов в интерфейсах
Давайте поговорим о преимуществах приватных методов теперь, когда мы их определили.
Затронутые в предыдущем разделе, интерфейсы могут использовать закрытые методы, чтобы скрыть детали реализации от классов, реализующих интерфейс. В результате одним из основных преимуществ их наличия в интерфейсах является инкапсуляция.
Еще одно преимущество (как и в случае с частными методами в целом) заключается в том, что в интерфейсы для методов с аналогичной функциональностью добавляется меньше дублирования и больше повторно используемого кода.
4. Вывод
В этом руководстве мы рассмотрели, как определять частные методы в интерфейсе и как мы можем использовать их как в статическом, так и в нестатическом контексте. Код, который мы использовали в этой статье, можно найти на GitHub .