В этой главе мы узнаем об интерфейсе в 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 ()», которая является реализованным методом.
В следующем примере мы будем реализовывать вышеуказанный интерфейс в классе.
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 не поддерживает множественное наследование, однако, одно и то же может быть достигнуто путем реализации более двух интерфейсов одновременно.
В следующем примере мы создадим два интерфейса, а позже мы реализуем оба интерфейса в классе.
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, а в классе с именем «множественный интерфейс» мы реализовали два интерфейса, объявленных ранее. Приведенный выше фрагмент кода выдаст следующий вывод в браузере.