Учебники

Котлин — Интерфейс

В этой главе мы узнаем об интерфейсе в Kotlin. В Kotlin интерфейс работает точно так же, как в Java 8, что означает, что он может содержать реализацию методов, а также объявление абстрактных методов. Интерфейс может быть реализован классом для использования его определенной функциональности. Мы уже ввели пример с интерфейсом в главе 6 — раздел «анонимный внутренний класс». В этой главе мы узнаем больше об этом. Ключевое слово «interface» используется для определения интерфейса в Kotlin, как показано в следующем фрагменте кода.

interface ExampleInterface {
   var myVar: String     // abstract property
   fun absMethod()       // abstract method
   fun sayHello() = "Hello there" // method with default implementation
}

В приведенном выше примере мы создали один интерфейс с именем «ExampleInterface», и внутри него у нас есть пара абстрактных свойств и методов вместе. Посмотрите на функцию с именем «sayHello ()», которая является реализованным методом.

В следующем примере мы будем реализовывать вышеуказанный интерфейс в классе.

Live Demo

interface ExampleInterface  {
   var myVar: Int            // abstract property
   fun absMethod():String    // abstract method
   
   fun hello() {
      println("Hello there, Welcome to TutorialsPoint.Com!")
   }
}
class InterfaceImp : ExampleInterface {
   override var myVar: Int = 25
   override fun absMethod() = "Happy Learning "
}
fun main(args: Array<String>) {
   val obj = InterfaceImp()
   println("My Variable Value is = ${obj.myVar}")
   print("Calling hello(): ")
   obj.hello()
   
   print("Message from the Website-- ")
   println(obj.absMethod())
}

Приведенный выше фрагмент кода выдаст следующий вывод в браузере.

Calling hello(): Hello there, Welcome to TutorialsPoint.Com!
Message from the Website-- Happy Learning 

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

В следующем примере мы создадим два интерфейса, а позже мы реализуем оба интерфейса в классе.

Live Demo

interface A {
   fun printMe() {
      println(" method of interface A")
   }
}
interface B  {
   fun printMeToo() {
      println("I am another Method from interface B")
   }
}

// implements two interfaces A and B
class multipleInterfaceExample: A, B

fun main(args: Array<String>) {
   val obj = multipleInterfaceExample()
   obj.printMe()
   obj.printMeToo()
}

В приведенном выше примере мы создали два примера интерфейсов A, B, а в классе с именем «множественный интерфейс» мы реализовали два интерфейса, объявленных ранее. Приведенный выше фрагмент кода выдаст следующий вывод в браузере.