Classes imbriquées et intérieures à Kotlin

May 09 2023
Kotlin est un langage de programmation moderne utilisé pour développer des applications Android et des applications côté serveur. L'une des caractéristiques intéressantes de Kotlin est sa prise en charge des classes imbriquées et internes.

Kotlin est un langage de programmation moderne utilisé pour développer des applications Android et des applications côté serveur. L'une des caractéristiques intéressantes de Kotlin est sa prise en charge des classes imbriquées et internes. Dans cet article, nous examinerons de plus près les classes imbriquées et internes dans Kotlin, et verrons comment elles peuvent être utilisées pour améliorer l'organisation et la structure de votre code.

Classes imbriquées

Une classe imbriquée est une classe définie à l'intérieur d'une autre classe. Dans Kotlin, vous pouvez définir une classe imbriquée en la déclarant simplement à l'intérieur de la classe externe à l'aide du classmot-clé. Voici un exemple :

class Outer {
    class Nested {
        fun `sayHello`() {
            println("Hello from Nested!")
        }
    }
}

Vous pouvez créer une instance d'une classe imbriquée en utilisant la syntaxe :

val nested = Outer.Nested()
nested.`sayHello`() // Output: Hello from Nested!

L'un des avantages de l'utilisation de classes imbriquées est qu'elles peuvent être utilisées pour regrouper des fonctionnalités connexes. Par exemple, vous pouvez avoir une classe qui représente une table de base de données et une classe imbriquée qui représente une requête sur cette table. En imbriquant la classe de requête dans la classe de table, vous pouvez conserver le code associé ensemble et rendre votre code plus organisé.

Classes intérieures

Une classe interne est une classe imbriquée qui a accès aux membres de sa classe externe. Dans Kotlin, vous pouvez définir une classe interne en utilisant le innermot-clé avant le classmot-clé. Voici un exemple :

class Outer {
    private val name: String = "Outer"
    
    inner class Inner {
        fun `sayHello`() {
            println("Hello from $name.Inner!")
        }
    }
}

Vous pouvez créer une instance d'une classe interne en utilisant la syntaxe :

val outer = Outer()
val inner = outer.Inner()
inner.`sayHello`() // Output: Hello from Outer.Inner!

L'un des avantages de l'utilisation des classes internes est qu'elles peuvent accéder aux membres de leur classe externe, ce qui peut être utile dans certaines situations. Par exemple, vous pouvez avoir une classe qui représente une liste d'éléments et une classe interne qui représente un itérateur sur cette liste. En faisant de l'itérateur une classe interne, il peut accéder aux membres de la classe de liste, tels que sa taille et ses éléments.

Différences entre les classes imbriquées et internes

Certaines des différences évidentes sont les suivantes :

  1. Accès aux membres de la classe externe : les classes imbriquées ne peuvent pas accéder aux membres de leur classe externe, contrairement aux classes internes. Les classes internes ont une référence à leur instance de classe externe, ce qui leur permet d'accéder à ses propriétés et fonctions.
  2. Portée : la portée d'une classe imbriquée est limitée à la classe englobante, tandis que la portée d'une classe interne est limitée à l'instance de la classe englobante. Cela signifie qu'une classe interne peut accéder aux membres privés de son instance de classe externe.
  3. Initialisation : une instance d'une classe imbriquée peut être créée sans instance de sa classe externe, tandis qu'une instance d'une classe interne doit être créée avec une instance de sa classe externe.
  4. Utilisation : les classes imbriquées sont généralement utilisées pour regrouper des fonctionnalités associées, tandis que les classes internes sont utilisées lorsque vous devez accéder aux membres de la classe externe à partir de la classe imbriquée.
  5. Syntaxe : la syntaxe pour déclarer une classe imbriquée consiste simplement à la déclarer à l'intérieur de la classe externe à l'aide du classmot-clé. La syntaxe pour déclarer une classe interne consiste à utiliser le innermot-clé avant le classmot-clé.
  6. Nommage : les classes imbriquées sont nommées avec le nom de la classe externe suivi d'un point et du nom de la classe imbriquée. Les classes internes sont nommées avec le nom de la classe externe suivi d'un point et du nom de la classe interne, et sont associées à une instance de la classe externe.

Conclusion

Les classes imbriquées et internes sont une fonctionnalité puissante de Kotlin qui peut vous aider à organiser et structurer votre code. En regroupant les fonctionnalités associées, vous pouvez rendre votre code plus organisé et plus facile à gérer. Et en utilisant des classes internes, vous pouvez donner à ces classes l'accès aux membres de leurs classes externes, ce qui peut être utile dans certaines situations. Alors la prochaine fois que vous