Прежде всего, постарайтесь не сравнивать и противопоставлять Python и Java.Это разные языки, с различной семантикой.Сравнение и контрастирование приведут только к таким запутанным вопросам, как этот, когда вы пытаетесь сравнить то, что Python не использует с тем, что требует Java.
Это очень похоже на сравнение числа 7 и зеленого цвета.Они оба существительные.Кроме того, у вас возникнут проблемы при сравнении двух.
Вот нижняя строка.
Python не нуждается в интерфейсах.
Java требует их.
Несколько объектов могут реализовывать один и тот же интерфейс, но множественное наследование также не обеспечивает этого?
Эти два понятия почти не имеют ничего общего друг с другом.
Я могу определить большое количество классов, которые имеют общий интерфейс.В Python из-за «утиной типизации» мне не нужно тщательно следить за тем, чтобы у всех них был общий суперкласс.
Интерфейс - это объявление «намерения» для непересекающихся иерархий классов.Он предоставляет общую спецификацию (которая может быть проверена компилятором), которая не является частью простой иерархии классов.Он позволяет нескольким иерархиям классов реализовывать некоторые общие функции и быть полиморфным по отношению к этим функциям.
В Python вы можете использовать множественное наследование с нашими интерфейсами без интерфейсов.Множественное наследование может включать классы интерфейса или не включать классы интерфейса.
У Java даже нет множественного наследования.Вместо этого он использует совершенно другую технику, называемую «mixins».
Зачем мне нужно создавать интерфейс «без реализации» - в основном «контракт» - если я могу просто проверить, существует ли методв объекте в Python, который наследуется от нескольких классов?
Если вы создаете интерфейс в Python, это может быть своего рода формальный контракт.Утверждение, что все подклассы будут делать то же, что и интерфейс.
Конечно, numbskull совершенно свободен врать.Они могут наследовать от интерфейса и неправильно реализовывать все.Ничто не предотвращает плохое поведение со стороны социопатов.
Вы создаете интерфейс в Java, чтобы позволить нескольким классам объектов иметь общее поведение.Поскольку вы не говорите компилятору много в Python, эта концепция даже не применяется.
Были ли интерфейсы созданы на других языках, потому что они не обеспечивают множественное наследование?
Поскольку понятия не связаны, трудно ответить на этот вопрос.
В Java они используют «mixin» вместо множественного наследования.«Интерфейс» позволяет добавить некоторые дополнительные функции.Это одно из применений интерфейса.
Другое использование интерфейса для отделения «есть» от «делает».Иерархия классов определяет, что такое объект.Иерархия интерфейса определяет, что класс ДОЛЖЕН.
В большинстве случаев IS и DOES изоморфны, поэтому нет никакого различия.
В некоторых случаях, что такое объект IS и что объект делаетотличается.