Kotlin - Interface

Dans ce chapitre, nous en apprendrons davantage sur l'interface de Kotlin. Dans Kotlin, l'interface fonctionne exactement de la même manière que Java 8, ce qui signifie qu'elle peut contenir une implémentation de méthode ainsi qu'une déclaration de méthodes abstraites. Une interface peut être implémentée par une classe afin d'utiliser sa fonctionnalité définie. Nous avons déjà présenté un exemple avec une interface dans le chapitre 6 - section «classe interne anonyme». Dans ce chapitre, nous en apprendrons plus à ce sujet. Le mot-clé «interface» est utilisé pour définir une interface dans Kotlin comme indiqué dans le morceau de code suivant.

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

Dans l'exemple ci-dessus, nous avons créé une interface nommée «ExampleInterface» et à l'intérieur, nous avons quelques propriétés et méthodes abstraites toutes ensemble. Regardez la fonction nommée «sayHello ()», qui est une méthode implémentée.

Dans l'exemple suivant, nous implémenterons l'interface ci-dessus dans une 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())
}

Le morceau de code ci-dessus donnera la sortie suivante dans le navigateur.

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

Comme mentionné précédemment, Kotlin ne prend pas en charge les héritages multiples, cependant, la même chose peut être obtenue en implémentant plus de deux interfaces à la fois.

Dans l'exemple suivant, nous allons créer deux interfaces et plus tard, nous implémenterons les deux interfaces dans une 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()
}

Dans l'exemple ci-dessus, nous avons créé deux exemples d'interfaces A, B et dans la classe nommée «multipleInterfaceExample», nous avons implémenté deux interfaces déclarées précédemment. Le morceau de code ci-dessus donnera la sortie suivante dans le navigateur.

method of interface A
I am another Method from interface B