модификаторы доступа в интерфейсах

166
01 февраля 2019, 18:30

Можно ли задавать методам интерфейса модификатор private или protected? Если да то зачем?

Answer 1

Начиная с Java 8 интерфейсы стали поддерживать реализации методов по умолчанию, а так же статические методы. В Java 9 была добавлена поддержка приватных private и приватных статических private static методов, которые могут вызываться из реализаций методов по умолчанию и из статических методов внутри интерфейсов соответственно. Методы с доступом protected и default интерфейсами не поддерживаются. Всё таки интерфейсы должны оставаться интерфейсами.

Пример использования private и private static методов в интерфейсе:

public interface MyInterface {
    // начиная с Java 8
    default String getName() {
        return getClass().getName() + " at " + getDate();
    }
    // начиная с Java 9
    private String getDate() {
        return new Date().toString();
    }
    // начиная с Java 8
    static String getStaticName() {
        return MyInterface.class.getName() + " at " + getStaticDate();
    }
    // начиная с Java 9
    private static String getStaticDate() {
        return new Date().toString();
    }
}
public class MyClass implements MyInterface {
    //
}
public class MainClass {
    public static void main(String[] args) {
        MyClass myClass = new MyClass();
        System.out.println(myClass.getName());
        System.out.println(MyInterface.getStaticName());
    }
}
Answer 2

Можно с Java 9. Сравнение 7, 8 и 9 жавы

READ ALSO
Перенос строки в регулярном выражении

Перенос строки в регулярном выражении

Здравствуй сообщество, вопрос прост почему данная функция отрабатывает не так как нужноВроде бы должно всё игнорировать так как я добавил...

190
Deploy telegram бота на heroku

Deploy telegram бота на heroku

Коллеги, написал телеграм бота и хочу развернуть его на heroku, что нужно прописать в ProcFile? Проект написан на Java как консольное приложение

163
Сложить целые числа

Сложить целые числа

Крашится при взаимодейстии именно с вот этим кодомВсе компоненты объявлены и присутствуют на XML-разметке

175