Руководство по Java 9. Приватные методы в интерфейсах.

В данной статье мы рассмотрим приватные методы в интерфейсах.
Вспомним, что начиная с Java 8 мы имеем возможность объявлять в интерфейсах:

  • абстрактные методы
  • методы по умолчанию
  • статические методы
  • константные переменные

Рассмотрим небольшой пример:

Интерфейс Codealbe:


package net.proselyte.java9.interfaces.java8;

public interface Codeable {
    String JAVA = "Java Language";
    String CPP = "C++ Language";

    
    
    default void doJob() {
        System.out.println("Developer writing code...");
    }

    default void drinkCoffee() {
        System.out.println("Developer drinks coffee...");
        thinkAboutCode();
    }

    static void thinkAboutCode() {
        System.out.println("Developer is thinking about code... ");
    }
}

Класс Developer:


package net.proselyte.java9.interfaces.java8;

public class Developer implements Codeable {
}

Класс DeveloperRunner:


package net.proselyte.java9.interfaces.java8;

public class DeveloperRunner {
    public static void main(String[] args) {
        Developer developer = new Developer();
        developer.doJob();
        developer.drinkCoffee();
        System.out.println(Developer.JAVA);
        System.out.println(Developer.CPP);
    }
}

В результате запуска класса DeveloperRunner мы получим следующий резултат:


Developer writing code...
Developer drinks coffee...
Developer is thinking about code... 
Java Language
C++ Language

Process finished with exit code 0

Теперь рассмотрим, что мы имеем касательно интерфейсов, в Java 9.
Начиная с Java 9 мы имеем возможность объявлять в интерфейсах:

  • абстрактные методы
  • методы по умолчанию
  • статические методы
  • константные переменные
  • приватные методы
  • приватные статические методы

Рассмотрим пример:

Интерфейс Codealbe:


package net.proselyte.java9.interfaces.java9;

public interface Codeable {
    String JAVA = "Java Language";
    String CPP = "C++ Language";


    default void doJob() {
        System.out.println("Developer writing code...");
    }

    default void drinkCoffee() {
        System.out.println("Developer drinks coffee...");
        thinkAboutCode();
        thinkAboutVacation();
        goToTheCinema();
    }

    static void thinkAboutCode() {
        System.out.println("Developer is thinking about code... ");
    }

    private void goToTheCinema() {
        System.out.println("Developer goes to the cinema...");
    }

    private static void thinkAboutVacation() {
        System.out.println("Developer thinks about vacation...");
    }
}

Класс Developer:


package net.proselyte.java9.interfaces.java9;

public class Developer implements Codeable {
}

Класс DeveloperRunner:


package net.proselyte.java9.interfaces.java9;

public class DeveloperRunner {
    public static void main(String[] args) {
        Developer developer = new Developer();
        developer.doJob();
        developer.drinkCoffee();
        System.out.println(developer.JAVA);
        System.out.println(developer.CPP);
    }
}

На этом мы заканчиваем обзор приватных методов в интерфейсах.
В следующей статье мы рассмотрим фабричные методы в Collections API.