Не совсем. Здесь четыре термина, поэтому я рассмотрю каждый из них:
Интерфейс
Интерфейс - это абстрактный класс (в таких языках, как Java, где нет множественного наследования, иногда есть другие ограничения, такие как отдельный тип данных), который предназначен для использования в качестве общей базы для доступа к ряду объектов с аналогичным поведением. . Концептуально абстрактность не требуется, но обычно интерфейс имеет хотя бы один абстрактный метод. Интерфейс - это метод взаимодействия вашей программы с рядом похожих классов, каждый с разной семантикой, но с одним и тем же общим назначением.
Договор
Контракт - это неявное соглашение, которое вы заключаете между пользователями и разработчиками класса или интерфейса. Например, предусловия и постусловия (инварианты обычно представляют собой контракт внутри реализации класса - как правило, такие вещи, как отношения между внутренними членами, не нужно раскрывать). Спецификация возвращаемого значения или аргумента также может быть частью контракта. Он в основном представляет, как использовать функцию / класс / интерфейс, и обычно не может быть полностью представлен на каком-либо языке (некоторые языки, такие как Eiffel, позволяют вставлять явные контракты, но даже они не всегда могут полностью конкретизировать требования. ). Когда вы реализуете интерфейс или производите от класса, вы всегда должны соответствовать требованиям интерфейса или, при переопределении неабстрактного класса, вести себя достаточно похоже, чтобы внешний просмотрщик не заметил разницы (это Лисков Принцип подстановки; производный объект должен иметь возможность заменять основание без каких-либо различий в поведении с внешней точки зрения).
Класс
Класс не требует частого повторения, поскольку вы явно уже использовали их раньше. Класс - это тип данных, а в некоторых языках - это надмножество интерфейсов (которые не имеют формального определения, как в C ++), а в других - независимые (например, в Java).
Объект
Объект - это экземпляр типа класса (или, как правило, любого типа, не являющегося классом). Точное определение объекта очень специфично для языка, но общее определение - это реальная вещь, на которую ссылаются несколько ссылок / указателей на одно и то же - например, в некоторых языках, таких как Java, == сравнивает, являются ли две переменные один и тот же объект, не обязательно, являются ли они семантически одинаковыми. Объекты не зависят от классов или интерфейсов - они представляют собой единственный экземпляр. Другой способ думать об этом заключается в том, что класс или интерфейс - это форма, а объект - это физический объект, который выходит из формы (довольно плохая аналогия, но это лучшее, что я могу придумать прямо сейчас).
person
coppro
schedule
20.10.2008