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