Deklarowanie data class
Zwięzłe klasy modelu
Deklarowanie data class to bezpłatna lekcja Kotlin Academy na CoddyKit. To lekcja 1 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.
Klasy przechowujące dane
Wiele klas służy wyłącznie do grupowania kilku wartości: użytkownika, punktu czy wyniku.
Kotlin udostępnia klasę danych — zwięzły sposób deklarowania takich klas modelu, wraz z wieloma gotowymi funkcjami.
Deklarowanie klasy danych
Należy dodać słowo kluczowe data przed class i wypisać właściwości w konstruktorze.
Ta pojedyncza linia zapewnia w pełni funkcjonalny model.
data class User(val name: String, val age: Int)
fun main() {
val u = User("Alice", 30)
println(u.name)
println(u.age)
}Automatyczne toString
Klasa danych automatycznie generuje czytelne toString(). Wyświetlenie obiektu pokazuje nazwę jego klasy i wartości właściwości.
W przypadku zwykłej klasy wyświetlony zostałby trudny do odczytania skrót.
data class User(val name: String, val age: Int)
fun main() {
val u = User("Bob", 25)
println(u)
}Właściwości są wymagane
Klasa danych musi deklarować co najmniej jedną właściwość w konstruktorze podstawowym.
Każdy parametr powinien być oznaczony jako val albo var, aby stał się właściwością używaną przez generowane funkcje.
data class Point(val x: Int, val y: Int)
fun main() {
val p = Point(3, 4)
println(p)
}Właściwości val i var
Należy używać val dla właściwości tylko do odczytu, a var dla właściwości zmiennych.
Zwykle preferuje się niezmienne klasy danych, ponieważ łatwiej zrozumieć ich działanie.
data class Counter(var count: Int)
fun main() {
val c = Counter(0)
c.count = 5
println(c)
}Domyślne wartości parametrów
Podobnie jak każdy konstruktor, konstruktor klasy danych może mieć wartości domyślne.
Dzięki temu wywołujący mogą pomijać parametry, których nie muszą ustawiać.
data class User(val name: String, val active: Boolean = true)
fun main() {
val u = User("Mia")
println(u)
}Argumenty nazwane
Połączenie klas danych z argumentami nazwanymi pozwala tworzyć obiekty w sposób jasny i czytelny bez dodatkowych komentarzy.
Jest to szczególnie pomocne, gdy kilka właściwości ma ten sam typ.
data class Rect(val width: Int, val height: Int)
fun main() {
val r = Rect(width = 10, height = 5)
println(r)
}Dodawanie metod
Klasa danych nadal może mieć ciało zawierające własne funkcje i właściwości wyliczane.
Generowane funkcje współistnieją z tym, co Państwo dodadzą.
data class Circle(val radius: Double) {
fun area(): Double = 3.14159 * radius * radius
}
fun main() {
val c = Circle(2.0)
println(c.area())
}Właściwości poza konstruktorem
Tylko właściwości w konstruktorze podstawowym są używane przez generowane funkcje.
Właściwość zadeklarowana w ciele należy do obiektu, ale jest pomijana przez toString, equals i podobne funkcje.
data class User(val name: String) {
var nickname: String = ""
}
fun main() {
val u = User("Alex")
u.nickname = "Al"
println(u) // nickname not shown
println(u.nickname)
}Kiedy używać klas danych
Warto sięgnąć po klasę danych, gdy obiekt służy głównie do przechowywania wartości:
- DTO i modele API
- Współrzędne, zakresy, wyniki
- Pakiety konfiguracji
Należy unikać ich w przypadku klas opartych na złożonym działaniu lub dziedziczeniu.
Zastosowanie w praktyce
Klasa danych to zwięzła deklaracja modelu:
- Należy poprzedzić ją słowem
datai wypisać właściwości - Otrzymują Państwo bez dodatkowego kodu funkcje
toString,equals,hashCodeicopy - Obsługuje wartości domyślne, argumenty nazwane i dodatkowe metody
data class Book(val title: String, val pages: Int = 0)
fun main() {
val b = Book(title = "Kotlin", pages = 300)
println(b)
}Szybkie sprawdzenie
Sprawdźcie Państwo swoją wiedzę na temat deklarowania klas danych.
Podsumowanie
Poznali Państwo sposób deklarowania klas danych:
- Słowo kluczowe
datageneruje standardowe funkcje - Właściwości konstruktora determinują generowane zachowanie
- Wartości domyślne i argumenty nazwane zapewniają elastyczność
W następnej części szczegółowo poznają Państwo generowane funkcje copy i equals.
Często zadawane pytania
Czy lekcja „Deklarowanie data class” jest bezpłatna?
Tak — pełny tekst „Deklarowanie data class” 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 „Deklarowanie data class”?
Zwięzłe klasy modelu Ć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 1 z 4.
Ile czasu zajmuje lekcja „Deklarowanie data class”?
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
- Deklarowanie data class
- copy i equals
- Deklaracje destrukturyzujące
- Data class w kolekcjach