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!")
}
}