Sobes.tech
Junior

Quelles sont les principales différences entre une classe et une interface en Kotlin?

sobes.tech IA

Réponse de l'IA

  • Classe : peut contenir des propriétés (états) et des fonctions (comportement). Peut être abstraite, ouverte (pour l'héritage) ou finale. Les constructeurs définissent la façon de créer des objets. Supporte l'héritage d'une seule classe et la mise en œuvre multiple d'interfaces.
  • Interface : définit un contrat de comportement que les classes doivent implémenter. Peut contenir des déclarations abstraites de fonctions et de propriétés, ainsi que des fonctions avec implémentation (Java 8+). Ne peut pas contenir d'états (propriétés avec champ de soutien). Une classe peut implémenter plusieurs interfaces. N'a pas de constructeurs.

Tableau comparatif :

Aspect Classe Interface
État Peut avoir des propriétés avec valeur. Ne peut pas avoir de propriétés avec valeur (seules des abstraites).
Constructeurs Peuvent exister. N'en ont pas.
Implémentation Peut fournir une implémentation complète. Fournit une implémentation partielle ou complète (avec des méthodes par défaut).
Héritage Hérite d'une seule classe. Implémente plusieurs interfaces.
Initialisation Peut être instanciée. Ne peut pas être instanciée directement.
Type Concrète ou abstraite. Seulement contrat de comportement.

Exemple de classe :

class Person(val name: String) { // classe avec constructeur et propriété
    fun greet() {
        println("Hello, my name is $name")
    }
}

Exemple d'interface :

interface Greeter { // interface avec méthode
    fun greet()
}

class EnglishGreeter : Greeter { // classe implémentant l'interface
    override fun greet() {
        println("Hello!")
    }
}