ПРИХОДИТЕ УЧИТЬСЯ НОВОЙ ПРОФЕССИИ ЛЕТОМ СО СКИДКОЙ ДО 70%Забронировать скидку

Работа с интерфейсами Kotlin: правильная инициализация

Пройдите тест, узнайте какой профессии подходите и получите бесплатную карьерную консультацию
В конце подарим скидку до 55% на обучение
Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

В Kotlin интерфейсы не имеют конструкторов и не способны создавать экземпляры сами по себе. Они выступают в качестве шаблонов для классов, которые обязаны их реализовывать, предлагая конкретные реализации абстрактных методов, предусмотренных интерфейсом. Вот наглядный пример:

kotlin
Скопировать код
interface MyInterface {
    fun myFunction()
}

class MyClass : MyInterface {
    override fun myFunction() {
        println("Пришло время действовать!")
    }
}

val myObject = MyClass()
myObject.myFunction()

Помните: определите класс, который должен реализовывать интерфейс, а затем инициализируйте класс, создав его экземпляр.

Пройдите тест и узнайте подходит ли вам сфера IT
Пройти тест

Дружба интерфейса и лямбды: Преобразования SAM

Единственный абстрактный метод: секретный ингредиент interface Kotlin

Kotlin обеспечивает эффективную реализацию интерфейсов благодаря Преобразованию SAM (Single Abstract Method), что дает возможность использовать лямбду вместо интерфейса с одиночным методом.

kotlin
Скопировать код
fun interface ClickListener {
    fun onClick(view: View)
}

val clickListener = ClickListener { view ->
    println("Бах! Нажата view!")
}

Используйте трюк с fun interface для единичного абстрактного метода

fun interface в Kotlin используется для определения интерфейса с одним абстрактным методом, что облегчает работу с подобными интерфейсами.

kotlin
Скопировать код
fun interface Transformer<T> {
    fun transform(source: T): T
}

val doubler = Transformer<Int> { it * 2 }

Использование анонимных объектов: для многогранных личностей interface

Если интерфейс описывает множество методов, Kotlin предлагает использовать анонимные объекты для реализации таких интерфейсов.

kotlin
Скопировать код
interface ComplexInterface {
    fun doSomething()
    fun doSomethingElse()
}

val complexObject = object : ComplexInterface {
    override fun doSomething() {
        //... давайте испечем торт!
    }

    override fun doSomethingElse() {
        //... и съедим его тоже!
    }
}

Осмысление синтаксиса: Реализация и Инстанцирование

Ключевое слово override: обязательно при реализации

Для реализации интерфейса в Kotlin обязательно нужно использовать override. Если избежать этого, вы столкнётесь с ошибками.

kotlin
Скопировать код
class ConcreteClass : MyInterface {
    override fun myFunction() {
        // сладше сахара: Реализация
    }
}

Правильный синтаксис — мощное оружие: создание экземпляра interface

Непосредственное создание экземпляров интерфейсов в Kotlin не допускается; соблюдайте синтаксис, так как Kotlin основан на понимании его правил.

fun interface: Интерфейсы с одним методом

Для интерфейсов с одним методом в Kotlin корректно использовать fun interface. Просто определите лямбду, и ваш интерфейс готов к использованию.

kotlin
Скопировать код
fun interface Action {
    fun run()
}

val action = Action {
    println("Running...")
}

Визуализация

Интерфейсы в Kotlin (и Java) не имеют конструкторов по следующим причинам:

Markdown
Скопировать код
// Интерфейс против Класса в Kotlin
Интерфейс (📃): [Определение протокола]
Класс (🏠):    [Выполнение протокола + Предоставление реализации]

Определение интерфейса похоже на составление меню:

Markdown
Скопировать код
📃: [Метод A, Метод B, Метод C]

Создание класса – это как работа шеф-повара, который готовит блюда в соответствии c меню:

Markdown
Скопировать код
🏠: [ Реализация Метода A, Метода B, Метода C]

Меню без шеф-повара ни к чему не приведет.

Markdown
Скопировать код
🚫📃🔑🚪: [Без Ключа, Без Двери, Без Дома!]

Ошибки из-за синтаксиса: Распространенное неверное понимание

Четкость синтаксиса: двухлезвенный меч

Точность программирования обусловлена синтаксисом. Попытки создать экземпляр интерфейса без соблюдения необходимого синтаксиса вызовут ошибки.

Ключевое слово object: универсальный помощник

В Kotlin object – мощный инструмент, позволяющий создавать синглтоны, компаньон-объекты, а также анонимные объекты.

Подсказки IDE: двухлезвенный меч

IDE – прекрасные помощники, однако их подсказки могут быть как полезными, так и вводящими в заблуждение. Важно использовать их осознанно.

Полезные материалы

  1. Интерфейсы | Документация Kotlin – официальная документация по интерфейсам Kotlin.
  2. Новейшие вопросы 'kotlin+interface' – Stack Overflow – дискуссии сообщества, связанные с интерфейсами в Kotlin.
  3. Интерфейсы Kotlin – GeeksforGeeks – подробная информация о роли интерфейсов в Kotlin.
  4. Medium – детали об использовании делегирования интерфейсов в Kotlin.
  5. Java 9 и далее от Venkat Subramaniam – YouTube – видео о интерфейсах и других продвинутых механизмах в современных Java и Kotlin.