Реализация нескольких интерфейсов Java - PullRequest
0 голосов
/ 15 октября 2018

настройка такая.
У меня есть несколько интерфейсов (то есть A, B, C), и у меня есть классы (Z и Y) для их реализации
X реализует A, B {} и Y реализует A, C {} и Z реализует B, C {}

Некоторые функции в интерфейсе A, B, C имеют одинаковое определение, и я не хочу их повторно вводить вкаждый класс, как я должен делать?
Я сделал это в Google и заметил, что одним из решений является использование удобного ключевого слова default в интерфейсе.Но что, если мне запрещено использовать это ключевое слово, так как код совместим с версией, предшествующей Java8?

Есть ли лучший способ справиться с этой проблемой?

Ответы [ 2 ]

0 голосов
/ 20 октября 2018

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

interface A {
    void m1();
    void common();
}

interface B {
    void m2();
    void common();
}

abstract class ABClass implements A, B {

    public void common() {
    System.out.println("Default");
}

Class X extends ABClass {
}
0 голосов
/ 15 октября 2018

Вместо того чтобы получать эти методы с помощью наследования и расширять классы mutliple для получения ваших определений, вы можете отдать предпочтение композиции и взять класс, реализующий метод, который вы хотите использовать повторно в качестве параметра.Сохраняя его в качестве закрытой конечной переменной-члена, вы можете вызывать этот общий метод универсальным способом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...