0Pricing
Kotlin Academy · Lekcja

Właściwości i metody enumów

Dodawaj zachowanie

Właściwości i metody enumów to bezpłatna lekcja Kotlin Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Kotlin Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Kotlin Academy zawiera 4 lekcji w sumie.

Enumy mogą przechowywać dane

Stałe enum mogą zawierać właściwości. Należy zadeklarować konstruktor klasy enum i przekazać wartości przy wymienianiu poszczególnych stałych.

enum class Coin(val cents: Int) {
    PENNY(1), NICKEL(5), DIME(10)
}

fun main() {
    println(Coin.DIME.cents)
}

Parametry konstruktora

Wartości w nawiasach po każdej stałej są argumentami konstruktora enum. Stają się one właściwościami tylko do odczytu tej stałej.

enum class Planet(val gravity: Double) {
    EARTH(9.8), MOON(1.6)
}

fun main() {
    println(Planet.MOON.gravity)
}

Wiele właściwości

Enum może deklarować kilka właściwości jednocześnie.

enum class Fruit(val color: String, val calories: Int) {
    APPLE("red", 95),
    BANANA("yellow", 105)
}

fun main() {
    val f = Fruit.BANANA
    println("${f.color} ${f.calories}")
}

Dodawanie metod

W treści enum można deklarować zwykłe funkcje. Wszystkie stałe współdzielą te funkcje.

enum class Temp(val celsius: Int) {
    COLD(5), WARM(25);

    fun toFahrenheit(): Int = celsius * 9 / 5 + 32
}

fun main() {
    println(Temp.WARM.toFahrenheit())
}

Zasada dotycząca średnika

Jeśli enum ma elementy wykraczające poza stałe, takie jak metody lub właściwości, po ostatniej stałej należy umieścić średnik.

enum class Op {
    ADD, SUB;

    fun describe() = "Operation: $name"
}

fun main() {
    println(Op.ADD.describe())
}

Metody abstrakcyjne dla poszczególnych stałych

Enumy mogą deklarować metody abstrakcyjne, które każda stała przesłania, dzięki czemu każda stała ma własne zachowanie.

enum class Math {
    PLUS { override fun apply(a: Int, b: Int) = a + b },
    TIMES { override fun apply(a: Int, b: Int) = a * b };

    abstract fun apply(a: Int, b: Int): Int
}

fun main() {
    println(Math.TIMES.apply(3, 4))
}

Właściwości obliczane

Gettery właściwości mogą obliczać wartości na podstawie danych stałej.

enum class Account(val balance: Int) {
    SAVINGS(1000), CHECKING(50);

    val isRich: Boolean get() = balance > 500
}

fun main() {
    println(Account.SAVINGS.isRich)
}

Łączenie danych i zachowania

Właściwości i metody pozwalają enumowi modelować bogatą, zamkniętą dziedzinę.

enum class Shape(val sides: Int) {
    TRIANGLE(3), SQUARE(4);

    fun describe() = "$name has $sides sides"
}

fun main() {
    println(Shape.SQUARE.describe())
}

Używanie właściwości w logice

Właściwości stałych są przydatne w obliczeniach i warunkach.

enum class Tier(val discount: Int) {
    BRONZE(5), GOLD(20)
}

fun price(base: Int, tier: Tier) = base - base * tier.discount / 100

fun main() {
    println(price(100, Tier.GOLD))
}

Domyślne wartości właściwości

Konstruktory enum obsługują domyślne wartości parametrów tak jak każdy konstruktor.

enum class Role(val canEdit: Boolean = false) {
    VIEWER, EDITOR(true)
}

fun main() {
    println(Role.VIEWER.canEdit)
    println(Role.EDITOR.canEdit)
}

Kompletny model

W tym przykładzie enum modeluje statusy HTTP, łącząc dane i zachowanie.

enum class Http(val code: Int) {
    OK(200), NOT_FOUND(404);

    fun isError() = code >= 400
}

fun main() {
    println(Http.NOT_FOUND.isError())
}

Szybkie sprawdzenie

Sprawdź swoją wiedzę na temat właściwości i metod enumów.

Podsumowanie

Nauczyli się Państwo, że enumy mogą zawierać zachowanie:

  • Dodanie konstruktora nadaje stałym właściwości.
  • Można deklarować współdzielone metody, używając średnika po stałych.
  • Metody abstrakcyjne pozwalają każdej stałej definiować własne zachowanie.
  • Właściwości obliczane i właściwości z wartościami domyślnymi działają jak zwykle.
enum class Coin(val cents: Int) {
    PENNY(1), DIME(10);
    fun double() = cents * 2
}

fun main() {
    println(Coin.DIME.double())
}

Często zadawane pytania

Czy lekcja „Właściwości i metody enumów” jest bezpłatna?

Tak — pełny tekst „Właściwości i metody enumów” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Kotlin Academy, przejdź na CoddyKit PRO. Kurs Kotlin Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Właściwości i metody enumów”?

Dodawaj zachowanie Ćwiczysz Kotlin Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Kotlin Academy?

Nie wymagamy żadnego doświadczenia. Kotlin Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Właściwości i metody enumów”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Kotlin Academy?

Tak. Każda lekcja Kotlin Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Definiowanie enumów
  2. Właściwości i metody enumów
  3. Enumy z when
  4. Wartości i numery porządkowe enumów
← Powrót do Kotlin Academy