Sobes.tech
Junior — Middle

Vysvetlite rozdiely medzi uzavretou triedou a enum v programovacom jazyku.

sobes.tech AI

Odpoveď od AI

V jazyku Kotlin slúžia napríklad sealed class (zatvorená trieda) a enum class (výčtová trieda) na modelovanie obmedzeného súboru typov, ale majú odlišné vlastnosti.

  • Zatvorená trieda (sealed class) umožňuje vytváranie hierarchie podtried, ktoré môžu mať vlastné vlastnosti a metódy. Všetky podtriedy musia byť deklarované v rovnakom súbore ako zatvorená trieda, čo zabezpečuje kontrolu nad rozšírením.
  • Výčtová trieda (enum class) predstavuje pevný súbor konštánt, z ktorých každá je objektom tejto triedy. Enumy nepodporujú dedičnosť, ale môžu mať vlastnosti a metódy.

Rozdiely:

  1. Dedičstvo: zatvorená trieda umožňuje vytváranie rôznych podtried s rôznymi štruktúrami, enum — pevný súbor objektov.
  2. Použitie: zatvorená trieda je vhodná na vyjadrenie stavov s rôznymi dátami, enum — na pevné konštanty.
  3. Rozšíriteľnosť: zatvorenú triedu je možné rozšíriť v rovnakom súbore, enum — nie.

Príklad zatvorenej triedy:

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

Príklad enumu:

enum class Direction {
    NORTH, SOUTH, EAST, WEST
}