Junior
70
questionbank

Каковы основные различия между классом и интерфейсом в Kotlin?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech
  • Класс: может содержать свойства (состояния) и функции (поведение). Может быть абстрактным, открытым (для наследования) или финальным. Конструкторы определяют способ создания объектов. Поддерживает наследование от одного класса и множественную реализацию интерфейсов.
  • Интерфейс: определяет контракт поведения, который должны реализовать классы. Может содержать абстрактные декларации функций и свойств, а также функции с реализацией (Java 8+). Не может содержать состояния (свойства с бэкинговым полем). Класс может реализовать несколько интерфейсов. Не имеет конструкторов.

Сравнительная таблица:

АспектКлассИнтерфейс
СостояниеМожет иметь свойства со значением.Не может иметь свойства со значением (только абстрактные).
КонструкторыМогут быть.Не имеют.
РеализацияМожет предоставлять полную реализацию.Предоставляет частичную или полную реализацию (с default-методами).
НаследованиеНаследует от одного класса.Реализует множество интерфейсов.
ИнициализацияМожет быть инстанциирован.Не может быть инстанциирован напрямую.
ТипКонкретный или абстрактный.Только контракт поведения.

Пример класса:

kotlin

Пример интерфейса:

kotlin