Теперь мы знаем, что Java 8 представила стандартные и статические методы в интерфейсах.
Интерфейсы были первоначально введены на Java, чтобы избежать the diamond problem, которые произошли на C++, в многократном наследовании.Предпочтения абстрактных классов по интерфейсам в Java 8
Но наряду с внедрением методов по умолчанию в интерфейсах в Java 8, теперь Java также представила проблему с алмазом, которой она избегала в предыдущих версиях.
Способы по умолчанию не обязательно должны быть переопределены.
Но когда проблема с алмазом связана с использованием интерфейсов, класс, реализующий эти интерфейсы , должен переопределить методы по умолчанию.
Так что теперь у меня есть три вопроса, на мой взгляд:
- Почему необходимо иметь стандартные методы?
- Не могли бы мы иметь множественное наследование через классы, вместо методов по умолчанию в интерфейсах?
- И в чем же заключалась необходимость избежать проблемы с алмазом в предыдущих версиях, если бы им пришлось вводить ее на Java 8?
Любое хорошее объяснение или любая ссылка для объяснения?
PS Я не нашёл никакой ссылки в Интернете, содержащей хорошую статью об этом.
Все, что они сказали, что абстрактный класс дает вам больше конкретности.
Как и в случае, абстрактные классы могут иметь конструкторы, но интерфейсы не могут.
Итак, еще раз хочу знать, если абстрактные классы более конкретны и могут иметь конструкторы,
и в любом случае Java представила проблему с алмазами, почему у нас должны быть интерфейсы сейчас? Разве абстрактные классы не будут достаточно хороши, как самостоятельные для множественного наследования?
возможно дубликат [Каковы различия между абстрактными классами и интерфейсами в Java 8?] (Http://stackoverflow.com/questions/22591499/what-are-the- difference-between-abstract-classes-and-interfaces-in-java-8) – assylias
Этот дубликат не отвечает на мой вопрос. Поэтому я не буду рассматривать его как дубликат. Посмотрите на третий комментарий ответа JB Nizet для дальнейшего оформления того, что мой вопрос. –