Мы используем файлы cookie
Мы используем файлы cookie для улучшения работы сайта и предоставления вам персонализированного опыта. Правила использования файлов cookie можно найти в нашей политике конфиденциальности
Основные отличия:
Реализация методов по умолчанию:
В Java 8 и выше в интерфейсах можно реализовать методы с телом (default methods).
В Kotlin методы в интерфейсах имеют тела по умолчанию. default
ключевое слово не требуется.
Абстрактные и открытые методы:
В Java все методы интерфейса неявно абстрактные. Чтобы сделать метод с телом, нужно использовать default
.
В Kotlin методы интерфейса с телом неявно open
и могут быть переопределены в классах, реализующих интерфейс. Методы без тела неявно abstract
.
Состояние (Properties):
В Java интерфейсы не могут содержать поля, только константы (final static
).
В Kotlin интерфейсы могут объявлять абстрактные свойства, которые должны быть реализованы в классах, или свойства с геттерами/сеттерами по умолчанию (backstage field не хранят).
Конструкторы: В Java интерфейсы не могут содержать конструкторы. В Kotlin интерфейсы не могут содержать конструкторы.
Модификаторы видимости:
В Java методы интерфейса неявно public
.
В Kotlin методы интерфейса неявно public open
.
| Особенность | Kotlin | Java | | :---------------------- | :---------------------------------------- | :
Основные отличия:
Реализация методов по умолчанию:
В Java 8 и выше в интерфейсах можно реализовать методы с телом (default methods).
В Kotlin методы в интерфейсах имеют тела по умолчанию. default
ключевое слово не требуется.
Абстрактные и открытые методы:
В Java все методы интерфейса неявно абстрактные. Чтобы сделать метод с телом, нужно использовать default
.
В Kotlin методы интерфейса с телом неявно open
и могут быть переопределены в классах, реализующих интерфейс. Методы без тела неявно abstract
.
Состояние (Properties):
В Java интерфейсы не могут содержать поля, только константы (final static
).
В Kotlin интерфейсы могут объявлять абстрактные свойства, которые должны быть реализованы в классах, или свойства с геттерами/сеттерами по умолчанию (backstage field не хранят).
Конструкторы: В Java интерфейсы не могут содержать конструкторы. В Kotlin интерфейсы не могут содержать конструкторы.
Модификаторы видимости:
В Java методы интерфейса неявно public
.
В Kotlin методы интерфейса неявно public open
.
| Особенность | Kotlin | Java | | :---------------------- | :---------------------------------------- | :
Зарегистрируйтесь или войдите, чтобы получить доступ к полным ответам на все вопросы из банка вопросов.