Рубрики
Uncategorized

5. Java интерфейсы

Что такое интерфейс в Java? Интерфейсы — это тип, похожий на класс, и определяется VI … Tagged с Java, программированием, дежопами, начинающими.

Интерфейсы — это тип, аналогичный классу и определяется через ключевое слово интерфейса. Интерфейсы используются для определения общего поведения классов внедрения. Если два класса реализуют тот же интерфейс, другой код, который работает на уровне интерфейса, может использовать объекты обоих классов.

Как и интерфейс класса определяет методы. Классы могут реализовать один или несколько интерфейсов. Класс, который реализует интерфейс, должен предоставить реализацию для всех абстрактных методов, определенных в интерфейсе.

Интерфейс может иметь абстрактные методы и _default_methods. Метод по умолчанию определяется с помощью ключевого слова по умолчанию в начале подписи метода. Все остальные методы, определенные в интерфейсах, являются общедоступными и абстрактными; Явная декларация этих модификаторов не является обязательной.

Интерфейсы могут иметь константы, которые всегда неявно публичные, статические и финальные.

Следующий код показывает пример реализации интерфейса.

Тестирование пакетов;

Общественный интерфейс MyInterface {

    // constant definition
    String URL = "https://www.vogella.com/";

    // public abstract methods
    void test();
    void write(String s);

    // default method
    default String reserveString(String s){
        return new StringBuilder(s).reverse().toString();
    }

}

Класс может реализовать интерфейс. В этом случае он должен предоставить конкретные реализации абстрактных интерфейсных методов. Если вы реализуете метод, определенный интерфейсом, вы можете использовать аннотацию averride. Это указывает на компилятор Java, который вы действительно хотите реализовать метод, определенный этим интерфейсом. Таким образом, компилятор может дать вам ошибку в вас неправильно набрал имя метода или в количестве аргументов. Следующий класс реализует интерфейс MyInterface, поэтому он должен реализовать абстрактный метод и может использовать методы по умолчанию.

пакет com.vogella.javaintro.base;

Открытый класс MyClassimpl реализует MyInterface {

@Override
public void test() {
}

@Override
public void write(String s) {
}

public static void main(String[] args) {
    MyClassImpl impl = new MyClassImpl();
    System.out.println(impl.reserveString("Lars Vogel"));
}

}

Перед Java 8 развивающимися интерфейсами, например, добавление новых методов к интерфейсу, не было возможно без нарушения существующих клиентов. Java 8 представил методы по умолчанию, теперь вы можете продлить интерфейс, не нарушая клиентов, просто подавливая его реализацию по умолчанию. Добавление такого метода по умолчанию является источником и бинарным совместимым изменением.

Класс всегда может переопределить метод по умолчанию для обеспечения лучшего поведения.

Если класс реализует два интерфейса, и если эти интерфейсы обеспечивают тот же метод по умолчанию, Java разрешает правильный метод для класса по следующим правилам:

Суперкласс побеждает всегда против суперинтерфейса — Если класс может унаследовать метод из суперкласса и суперинтерфейса, класс наследует метод суперкласса. Это верно для конкретных и абстрактных методов суперкласса. Это правило подразумевает, что методы по умолчанию не используются, если этот метод также объявлен в цепочке суперкласс.

Подтипы выигрывают над Supertypes — Если класс может унаследовать метод из двух интерфейсов, и один является подтипом другого, класс настегает метод от подтипа

Во всех остальных случаях класс должен реализовать метод по умолчанию

Следующий список демонстрирует лисин № 3.

Публичный интерфейс A {пустота по умолчанию M () {}}

Общественный интерфейс B {Пустота по умолчанию M () {}}

Открытый класс C реализует A, B {@ avoverride Public void M () {}} В вашей реализации вы также можете позвонить в супер-метод, который вы предпочитаете.

Public Class C реализует A, B {@ avoverride Public Void M () {A.Super.m ();}}

Все интерфейсы, имеющие только один метод, называются функциональными интерфейсами. Функциональные интерфейсы имеют то преимущество, что они могут использоваться вместе с лямбдами выражениями. Посмотри, что такое лямбдас? Чтобы узнать больше о лямбдасе, например, тип лямбдаса — это функциональный интерфейс.

Компилятор Java автоматически идентифицирует функциональные интерфейсы. Единственное требование заключается в том, что у них есть только один абстрактный метод. Однако можно захватить дизайн намерения с аннотацией @FunctionalInterface.

Несколько интерфейсов Java по умолчанию являются функциональными интерфейсами:

java.lang. Родительский

java.util.concurrent. Callable.

java.io. FileFilter.

java.util. Компаратор

Java.beans. PropertyChangeListener.

Java также содержит пакет Java.Util.Function, который содержит функциональные интерфейсы, которые часто используются, такие как:

Предикат — логическое ценное свойство объекта

Потребитель — действие, которое должно быть выполнено на объекте

Функция — функция, преобразующая a t до r

Поставщик — предоставляет экземпляр T (например, завод)

Unaryoperator — функция от t до t

Биминарбинатор — функция (т, т) до

Оригинал: «https://dev.to/erraghavkhanna/5-java-interfaces-3mhm»