Sobes.tech
Junior — Middle
136

Kotlin-те Sealed Interface пен Sealed Class арасында қандай айырмашылықтар бар?

Сұралған компаниялар
Effective Technologies
СБЕРСБЕР

AI-дан жауап

sobes.tech AI

Kotlin-да sealed class және sealed interface мұрагерлік иерархиясын шектеу үшін пайдаланылады, олар белгілі бір компиляция кезеңінде белгілі болатын нақты ұрпақтар немесе жүзеге асырулар жиынтығын жариялауға мүмкіндік береді.

Негізгі айырмашылықтар:

  • Sealed Class — шектеулі ұрпақтар саны болуы мүмкін класс. Барлық ұрпақтар сол sealed класс орналасқан файлда немесе оның шегінде жариялануы керек. Бұл шектеулі нұсқалар жиынтығы бар иерархияларды жүзеге асыру үшін ыңғайлы, мысалы, жағдайлар немесе оқиғалар.

  • Sealed Interface — sealed класс сияқты, бірақ интерфейстер үшін. Бұл шектеулі жүзеге асырулар жиынтығы бар интерфейсті жариялауға мүмкіндік береді. Бұл әртүрлі класс жүзеге асыра алатын мінез-құлықты сипаттау қажет болғанда пайдалы, бірақ олардың саны шектелген.

Мысал:

sealed class Result {
    data class Success(val data: String) : Result()
    object Error : Result()
}

sealed interface Shape
class Circle(val radius: Double) : Shape
class Rectangle(val width: Double, val height: Double) : Shape

Осылайша, sealed class негізделген жүзеге асырулар мен жағдайлар үшін, ал sealed interface — шектеулі жүзеге асырулар жиынтығы бар келісім-шартты сипаттау үшін қолайлы. Екеуі де компиляторға when өрнектерінің толықтығын тексеруге көмектеседі және тип қауіпсіздігін қамтамасыз етеді.