Перейти к основному содержимому

Частные методы в интерфейсах Java

· 2 мин. чтения

Задача: Наибольшая подстрока без повторений

Для заданной строки s, найдите длину наибольшей подстроки без повторяющихся символов. Подстрока — это непрерывная непустая последовательность символов внутри строки...

ANDROMEDA 42

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 .