Kotlin - Interface

Neste capítulo, aprenderemos sobre a interface em Kotlin. No Kotlin, a interface funciona exatamente de forma semelhante ao Java 8, o que significa que eles podem conter a implementação de métodos, bem como a declaração de métodos abstratos. Uma interface pode ser implementada por uma classe para usar sua funcionalidade definida. Já apresentamos um exemplo com uma interface no Capítulo 6 - seção “classe interna anônima”. Neste capítulo, aprenderemos mais sobre isso. A palavra-chave “interface” é usada para definir uma interface em Kotlin, conforme mostrado no código a seguir.

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

No exemplo acima, criamos uma interface chamada “ExampleInterface” e, dentro dela, temos algumas propriedades e métodos abstratos todos juntos. Observe a função chamada “sayHello ()”, que é um método implementado.

No exemplo a seguir, implementaremos a interface acima em uma classe.

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())
}

O trecho de código acima produzirá a seguinte saída no navegador.

My Variable Value is = 25
Calling hello(): Hello there, Welcome to TutorialsPoint.Com!
Message from the Website-- Happy Learning

Conforme mencionado anteriormente, Kotlin não oferece suporte a várias heranças, no entanto, a mesma coisa pode ser alcançada implementando mais de duas interfaces ao mesmo tempo.

No exemplo a seguir, criaremos duas interfaces e, posteriormente, implementaremos ambas as interfaces em uma classe.

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()
}

No exemplo acima, criamos duas interfaces de amostra A, B e na classe chamada “multipleInterfaceExample” implementamos duas interfaces declaradas anteriormente. O trecho de código acima produzirá a seguinte saída no navegador.

method of interface A
I am another Method from interface B