java и множественное наследование

Можно ли назвать этот код множественным наследованием?

interface Interface {

    public int alpha = 0;
    public int calculA(int a, int b);
    public int calculB(int a, int b);
}

interface InterfaceA extends Interface {

    public default int calculA(int a, int b) {
        return a + b;
    }
}

interface InterfaceB extends Interface {

    public default int calculB(int a, int b) {
        return a - b;
    }
}

class TestInterface implements InterfaceA, InterfaceB {

    public TestInterface() {
        System.out.println(alpha);
        System.out.println(calculA(5, 2));
        System.out.println(calculB(5, 2));
    }

    public static void main(String[] args) {
        new TestInterface();
    }
}

Похоже, ключевое слово по умолчанию разрешает множественное наследование.

Это правильно или это понятие имеет другое название?

Спасибо

Изменить

Это не дубликат Являются ли значения по умолчанию в JDK 8 формой множественного наследования в Java?, потому что в этом потоке говорится о функции, называемой виртуальными расширениями. .

Я хочу спросить, называется ли моя реализация множественным наследованием или чем-то еще.


person MonkeyJLuffy    schedule 24.02.2017    source источник
comment
у вас не может быть реализации в интерфейсах, если вы не используете JVM с java 7 и метод объявлен статическим   -  person Danyal Sandeelo    schedule 24.02.2017
comment
Возможный дубликат По умолчанию в JDK 8 форма множественного наследования в Java?   -  person Calculator    schedule 24.02.2017
comment
@DanyalSandeelo У меня есть Java 8, и этот код правильный, и он работает   -  person MonkeyJLuffy    schedule 24.02.2017
comment
Есть разные виды множественного наследования. В вашем коде реализовано множественное наследование типов и поведения (с помощью методов виртуального расширения), а не множественное наследование состояния (что невозможно в Java). Вот об этом .   -  person Calculator    schedule 24.02.2017


Ответы (2)


java не поддерживает множественное наследование.

То, что вы делаете, реализует interface. В java нельзя расширить несколько классов, но можно реализовать несколько интерфейсов.

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

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

Чтобы узнать больше о interface, нажмите здесь

person Yousaf    schedule 24.02.2017
comment
Спасибо, я это знаю. Но теперь похоже, что использование методов по умолчанию в интерфейсе, как и раньше, позволяет иметь своего рода множественное наследование. У меня вопрос, просто правильно называть это так или иначе. - person MonkeyJLuffy; 24.02.2017
comment
Я бы не стал использовать слова multiple inheritance и java в одном предложении - person Yousaf; 24.02.2017
comment
Я знаю все эти концепции. И поэтому я задаю здесь свой вопрос, подтверждать или нет. Я знаю, что одним из первых законов Java является запрет на множественное наследование, но похоже, что в моей реализации это возможно. - person MonkeyJLuffy; 24.02.2017

Java не поддерживает множественное наследование.

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

person Ousmane D.    schedule 24.02.2017
comment
Верно, это допустимо, и можно реализовать эти методы по умолчанию, тогда вы можете сделать множественное наследование таким образом. По крайней мере, похоже ... - person MonkeyJLuffy; 24.02.2017