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