2016-04-29 2 views
5

Я столкнулся с этой темой при чтении интерфейса в Java 8, есть сценарии, в которых мы определяем метод в интерфейсе с использованием ключевого слова по умолчанию или статического слова, позволяя следующему ребенку либо переопределить один и тот же метод, либо реализовать его. Означает ли это множественное наследование? Еще одна проблема, которую я обнаружил, заключается в том, что возвращаемый тип должен быть со-вариантным типом else компилировать проблему, а это значит, что он по-прежнему не поддерживает множественное наследование? Можем ли мы сказать, что java поддерживает множественное наследование? Позвольте мне узнать более подробную информацию по этой теме.Поддерживает ли Java 8 множественное наследование?

+2

@Draken Я не думаю, что другой вопрос действительно отвечает на вопрос - как вопрос не идет о Java 8 и реализации по умолчанию в интерфейсах на все. – GhostCat

+0

Путаница заключается в использовании наследования слов, наследование технически только должно использоваться для расширения классов, а не для интерфейсов. Таким образом, мы не можем выполнять множественное наследование, но можем выполнять множественную реализацию. Я чувствую, что дальнейшее чтение по этому вопросу поможет намного больше – Draken

+0

Да, вы правы @ Jägermeister –

ответ

5

Означает ли это множественное наследование?

Для интерфейсов, да, но не классов. Обычно это классы, о которых думают люди, поскольку только классы могут иметь поля и конструкторы. Это ничем не отличается от Java 1.0

тип возвращаемого типа должен быть со-вариантом, иначе компилировать вопрос, то есть он по-прежнему не поддерживает множественное наследование?

Потребность в ковариантных типах возврата не связана с наличием у вас множественного наследования или нет.

Можно ли сказать, что java поддерживает множественное наследование?

Для интерфейсов да.

+0

Если мы пишем 2 разных интерфейса, имеющих одинаковый метод по умолчанию, но с другим типом возвращаемого значения, то Java ожидает, что тип возвращаемого типа будет ковариантным в классе реализации. Без ко-вариантного типа Java выдает ошибку компилятора. Но чтобы обеспечить поддержку множественного наследования, тип возврата может быть другим. Мы можем использовать статический метод, чтобы заставить Java поддерживать множественное наследование. Тем не менее, есть проблема, нам действительно нужно добавить Parent-интерфейс, чтобы использовать его статические методы ... –

+1

@ShaikhNizamuddin, если у вас есть два метода, которые возвращают несовместимые типы, может быть запутанным для разработчика, чтобы дать методам одно и то же имя. Я бы предложил дать разные имена, поэтому разработчику будет понятно, какой результат они должны ожидать. –

+0

Да, хорошо использовать разные имена для методов, имеющих разные типы возврата. Возможно, в будущих версиях Java (бит предположения, будучи оптимистичным) мы можем видеть, что этот вариант со-варианта не является двусмысленным. :) –

-2

Интерфейс ,, Interface..all способ .. Спасибо

+0

. Тем не менее, будет иметь место двусмысленность в случае тип возвращаемого значения не совпадает, для поддержки множественного наследования для Java требуется тип возврата для совместного варианта.Но пользователь может выбрать свой собственный тип возврата ... –

Смежные вопросы