Déclarations et expressions d'objets Kotlin

Dans cet article, vous découvrirez les déclarations d'objets (singletons) et les expressions d'objets à l'aide d'exemples.

Déclarations d'objets

Singleton est un modèle orienté objet où une classe ne peut avoir qu'une seule instance (objet).

Par exemple, vous travaillez sur une application ayant un backend de base de données SQL. Vous souhaitez créer un pool de connexions pour accéder à la base de données tout en réutilisant la même connexion pour tous les clients. Pour cela, vous pouvez créer la connexion via la classe singleton afin que chaque client obtienne la même connexion.

Kotlin fournit un moyen simple de créer des singletons à l'aide de la fonction de déclaration d'objet. Pour cela, le mot-clé objet est utilisé.

 object SingletonExample (… // corps de la classe…)

Le code ci-dessus combine une déclaration de classe et une déclaration d'une seule instance SingletonExample de la classe.

Une déclaration d'objet peut contenir des propriétés, des méthodes, etc. Cependant, ils ne sont pas autorisés à avoir des constructeurs (ce qui est logique). Pourquoi?

À l'instar des objets d'une classe normale, vous pouvez appeler des méthodes et accéder aux propriétés en utilisant la .notation.

Exemple: déclaration d'objet

 object Test ( private var a: Int = 0 var b: Int = 1 fun makeMe12(): Int ( a = 12 return a ) ) fun main(args: Array) ( val result: Int result = Test.makeMe12() println("b = $(Test.b)") println("result = $result") )

Lorsque vous exécutez le programme, la sortie sera:

 b = 1 résultat = 12

La déclaration d'objet peut hériter des classes et des interfaces de la même manière que les classes normales.

Singletons et injection de dépendances

Les déclarations d'objets peuvent parfois être utiles. Cependant, ils ne sont pas idéaux dans les grands systèmes logiciels qui interagissent avec de nombreuses autres parties du système.

Lecture recommandée: Injection de dépendances et modèle de conception Singleton

Expressions d'objets Kotlin

Le mot-clé object peut également être utilisé pour créer des objets d'une classe anonyme connue sous le nom d'objets anonymes. Ils sont utilisés si vous devez créer un objet d'une légère modification d'une classe ou d'une interface sans déclarer une sous-classe pour celle-ci. Par exemple ,

 window.addMouseListener (object: MouseAdapter () (override fun mouseClicked (e: MouseEvent) (//…) override fun mouseEntered (e: MouseEvent) (//…)))

(L'exemple est tiré de la page de documentation officielle de Kotlin.)

Ici, un objet anonyme est déclaré en étendant la classe MouseAdapter. Le programme remplace deux MouseAdapterméthodes: mouseClicked()et mouseEntered().

Si nécessaire, vous pouvez attribuer un nom à l'objet anonyme et le stocker dans une variable. Par exemple,

 val obj = object: MouseAdapter () (override fun mouseClicked (e: MouseEvent) (//…) override fun mouseEntered (e: MouseEvent) (//…))

Exemple: expression d'objet Kotlin

 open class Person() ( fun eat() = println("Eating food.") fun talk() = println("Talking with people.") open fun pray() = println("Praying god.") ) fun main(args: Array) ( val atheist = object : Person() ( override fun pray() = println("I don't pray. I am an atheist.") ) atheist.eat() atheist.talk() atheist.pray() ) 

Lorsque vous exécutez le programme, la sortie sera:

Manger des aliments. Parler avec les gens. Je ne prie pas. Je suis athée.

Ici, l'objet anonyme est stocké dans la variable athée qui implémente la classe Person avec la pray()méthode remplacée.

Si vous implémentez une classe qui a un constructeur pour déclarer un objet anonyme, vous devez transmettre les paramètres de constructeur appropriés. Par exemple,

 open class Person(name: String, age: Int) ( init ( println("name: $name, age: $age") ) fun eat() = println("Eating food.") fun talk() = println("Talking with people.") open fun pray() = println("Praying god.") ) fun main(args: Array) ( val atheist = object : Person("Jack", 29) ( override fun pray() = println("I don't pray. I am an atheist.") ) atheist.eat() atheist.talk() atheist.pray() ) 

Lorsque vous exécutez le programme, la sortie sera:

nom: Jack, 29 ans Manger de la nourriture. Parler avec les gens. Je ne prie pas. Je suis athée.

Articles intéressants...