Sobes.tech
Junior

Care sunt principalele diferențe dintre o clasă și o interfață în Kotlin?

sobes.tech AI

Răspuns de la AI

  • Clasă: poate conține proprietăți (stări) și funcții (comportament). Poate fi abstractă, deschisă (pentru moștenire) sau finală. Constructorii definesc modul de creare a obiectelor. Suportă moștenirea de la o singură clasă și implementarea multiplă a interfețelor.
  • Interfață: definește un contract de comportament pe care clasele trebuie să îl implementeze. Poate conține declarații abstracte de funcții și proprietăți, precum și funcții cu implementare (Java 8+). Nu poate conține stări (proprietăți cu câmp de suport). O clasă poate implementa mai multe interfețe. Nu are constructori.

Tabel comparativ:

Aspect Clasă Interfață
Stare Poate avea proprietăți cu valoare. Nu poate avea proprietăți cu valoare (doar abstracte).
Constructori Pot exista. Nu au.
Implementare Poate oferi implementare completă. Oferă implementare parțială sau completă (cu metode implicite).
Moștenire Moștenește de la o singură clasă. Implementează mai multe interfețe.
Inițializare Poate fi instanțiat. Nu poate fi instanțiat direct.
Tip Concret sau abstract. Doar contract de comportament.

Exemplu de clasă:

class Person(val name: String) { // clasă cu constructor și proprietate
    fun greet() {
        println("Hello, my name is $name")
    }
}

Exemplu de interfață:

interface Greeter { // interfață cu metodă
    fun greet()
}

class EnglishGreeter : Greeter { // clasă care implementează interfața
    override fun greet() {
        println("Hello!")
    }
}