Ключевое слово implements

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

Синтаксис

kotlinclass ClassName : InterfaceName {
  // реализация методов интерфейса
}
kotlinclass ClassName : Interface1, Interface2 {
  // реализация методов интерфейсов
}

Пример

Создадим интерфейс Drawable с методом draw и реализуем его в классе Circle:

kotlininterface Drawable {
  fun draw()
}

class Circle : Drawable {
  override fun draw() {
    println("Drawing a circle")
  }
}

Использование реализации:

kotlinval circle = Circle()
circle.draw()

Результат выполнения кода:

kotlinString "Drawing a circle"

Пример

Реализация нескольких интерфейсов в одном классе:

kotlininterface Clickable {
  fun click()
}

interface Draggable {
  fun drag()
}

class UIElement : Clickable, Draggable {
  override fun click() {
    println("Element clicked")
  }

  override fun drag() {
    println("Element dragged")
  }
}

Использование реализации:

kotlinval element = UIElement()
element.click()
element.drag()

Результат выполнения кода:

kotlinString "Element clicked"
String "Element dragged"

Пример

Реализация интерфейса с свойствами и методами с реализацией по умолчанию:

kotlininterface Vehicle {
  val maxSpeed: Double
  fun drive() {
    println("Driving at max speed $maxSpeed")
  }
}

class Car(override val maxSpeed: Double) : Vehicle {
  override fun drive() {
    super.drive()
    println("Car is driving")
  }
}

Использование реализации:

kotlinval car = Car(200.0)
car.drive()

Результат выполнения кода:

kotlinString "Driving at max speed 200.0"
String "Car is driving"

Смотрите также

  • ключевое слово interface,
    которое используется для объявления интерфейсов
  • ключевое слово class,
    которое используется для объявления классов
  • ключевое слово override,
    которое используется для переопределения методов
  • ключевое слово abstract,
    которое используется для объявления абстрактных классов