Kotlin - Interfaz

En este capítulo, aprenderemos sobre la interfaz en Kotlin. En Kotlin, la interfaz funciona exactamente de manera similar a Java 8, lo que significa que puede contener la implementación de métodos así como la declaración de métodos abstractos. Una clase puede implementar una interfaz para utilizar su funcionalidad definida. Ya hemos introducido un ejemplo con una interfaz en el Capítulo 6 - sección "clase interna anónima". En este capítulo, aprenderemos más al respecto. La palabra clave "interfaz" se utiliza para definir una interfaz en Kotlin como se muestra en el siguiente fragmento de código.

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

En el ejemplo anterior, hemos creado una interfaz llamada "ExampleInterface" y dentro de ella tenemos un par de propiedades y métodos abstractos todos juntos. Mire la función llamada "sayHello ()", que es un método implementado.

En el siguiente ejemplo, implementaremos la interfaz anterior en una clase.

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

El fragmento de código anterior producirá el siguiente resultado en el navegador.

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

Como se mencionó anteriormente, Kotlin no admite múltiples herencias, sin embargo, se puede lograr lo mismo implementando más de dos interfaces a la vez.

En el siguiente ejemplo, crearemos dos interfaces y luego implementaremos ambas interfaces en una clase.

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

En el ejemplo anterior, hemos creado dos interfaces de muestra A, B y en la clase denominada "multipleInterfaceExample" hemos implementado dos interfaces declaradas anteriormente. El fragmento de código anterior producirá el siguiente resultado en el navegador.

method of interface A
I am another Method from interface B