Kotlinдеги маалымат класстары жана sealed класстары жөнүндө айтып бер.
sobes.tech AI
AIден жооп
Kotlin-дағы деректер кластары деректерді сақтау үшін пайдаланылады. Олар автоматты түрде пайдалы әдістерді, мысалы, equals(), hashCode(), toString(), copy() және бұзылу үшін компоненттерді жасайды.
// Деректер класының мысалы
data class User(val name: String, val age: Int)
Seal кластар шектеулі кластар мұрагерлігін көрсету үшін пайдаланылады. Барлық ұрпақ кластар бір файлда анықталуы керек, ол seal класы (Kotlin 1.5+ нұсқасында бұл шектеу жұмсартылды). Бұл компиляторға when өрнегінде ұрпақ кластардың толық қамтылуын қамтамасыз етуге мүмкіндік береді.
// Seal класының мысалы
sealed class Result {
data class Success(val data: String) : Result()
data class Error(val message: String) : Result()
object Loading : Result()
}
// Seal класты `when` өрнегінде пайдалану мысалы
fun processResult(result: Result) {
when (result) {
is Result.Success -> println("Жетістік: ${result.data}")
is Result.Error -> println("Қате: ${result.message}")
Result.Loading -> println("Жүктелуде...")
}
}
Негізгі айырмашылықтар:
- Мақсат: деректер кластары - деректерді сақтау, seal кластар - кластар мұрагерлігін шектеу.
- Генерацияланған әдістер: деректер кластары стандартты әдістерді жасайды, seal кластар - жасамайды.
- Ұрпақтарды шектеу: seal кластар ұрпақтарды жариялауда шектеулер қояды, деректер кластары - жоқ.
when-де толық қамту: Kotlin компиляторы seal класының ұрпақтарыныңwhen-де толық қамтылуын тексере алады,elseбөлігісіз.
Екі, seal және деректер кластар, абстракт болуы мүмкін, бірақ деректер кластары open бола алмайды (олар әдепкі бойынша final), және тікелей open әдістерін жүзеге асыра алмайды (тек интерфейстер немесе абстракт кластар арқылы). Seal кластар әдепкі бойынша, абстракт, және олардың конструкторлары жеке.