0Pricing
Android Academy · Lekcja

Klasy danych

Zwięzłe klasy do przechowywania danych.

Klasy danych to bezpłatna lekcja Android Academy na CoddyKit. To lekcja 4 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 Android Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Android Academy zawiera 4 lekcji w sumie.

Czym jest klasa danych?

Klasa danych to klasa przeznaczona do przechowywania danych. Kotlin automatycznie generuje dla niej przydatne metody.

Deklaruje się ją, zapisując data przed słowem class.

Deklarowanie klasy danych

Klasa danych musi mieć co najmniej jeden parametr w konstruktorze głównym, oznaczony jako val lub var.

Oto klasa User, która przechowuje nazwę i wiek.

data class User(val name: String, val age: Int)

fun main() {
    val u = User("Ada", 30)
    println(u.name)
}

Czytelna funkcja toString

Zwykła klasa wypisuje niezrozumiały adres. Klasa danych generuje czytelne toString, pokazujące każdą właściwość.

Znacznie ułatwia to debugowanie.

data class User(val name: String, val age: Int)

fun main() {
    val u = User("Ada", 30)
    println(u)
}

Porównywanie za pomocą equals

Klasy danych są porównywane na podstawie zawartości, a nie tożsamości. Dwa obiekty o takich samych wartościach właściwości są równe przy użyciu ==.

Zwykła klasa uznałaby je za różne.

data class Point(val x: Int, val y: Int)

fun main() {
    val a = Point(1, 2)
    val b = Point(1, 2)
    println(a == b)
}

Funkcja copy

Wygenerowana funkcja copy tworzy nowy obiekt na podstawie istniejącego. Można zmienić tylko wskazane właściwości.

Oryginalny obiekt pozostaje bez zmian.

data class User(val name: String, val age: Int)

fun main() {
    val u = User("Ada", 30)
    val older = u.copy(age = 31)
    println(older)
}

Destrukturyzacja

Klasy danych obsługują destrukturyzację: rozpakowanie właściwości do osobnych zmiennych w jednym wierszu.

Kolejność odpowiada kolejności w konstruktorze.

data class User(val name: String, val age: Int)

fun main() {
    val (name, age) = User("Sam", 25)
    println(name + " " + age)
}

Wartości domyślne też działają

Podobnie jak w każdym konstruktorze, parametry klasy danych mogą mieć wartości domyślne.

Dzięki temu można pominąć pola, które nie są potrzebne.

data class User(val name: String, val active: Boolean = true)

fun main() {
    val u = User("Lee")
    println(u)
}

hashCode w kolekcjach

Klasy danych generują również hashCode, dzięki czemu działają poprawnie jako klucze w obiektach typu Set lub Map.

Równe obiekty generują ten sam skrót, więc duplikaty są wykrywane.

data class Point(val x: Int, val y: Int)

fun main() {
    val set = setOf(Point(1, 1), Point(1, 1))
    println(set.size)
}

Kiedy używać klas danych

Warto użyć klasy danych, gdy obiekt przede wszystkim przenosi wartości, a nie obsługuje złożonego zachowania.

  • Odpowiedzi API
  • Stan interfejsu użytkownika w Androidzie
  • Rekordy baz danych

W przypadku obiektów zawierających dużo logiki lepszym wyborem jest zwykła klasa.

Klasy danych oszczędzają pracę

Pojedyncze słowo kluczowe data zapewnia toString, equals, hashCode, copy i destrukturyzację.

To dużo kodu pomocniczego, którego nie trzeba już ręcznie pisać ani utrzymywać.

Klasa danych a zwykła klasa

Zwykła klasa jest porównywana na podstawie tożsamości i wypisuje odwołanie do pamięci. Klasa danych jest porównywana na podstawie zawartości i wypisuje swoje wartości.

To słowo kluczowe data włącza wszystkie te automatycznie generowane zachowania.

class Plain(val x: Int)
data class Smart(val x: Int)

fun main() {
    println(Plain(1) == Plain(1))
    println(Smart(1) == Smart(1))
}

Szybkie sprawdzenie

Sprawdź swoją wiedzę na temat klas danych.

Podsumowanie

Dowiedział się Pan/Dowiedziała się Pani, że klasa danych automatycznie generuje toString, equals, hashCode, copy i obsługę destrukturyzacji.

Klasy danych idealnie nadają się do obiektów przenoszących wartości, takich jak stan interfejsu użytkownika i modele API. Poznał Pan/Pani już funkcje, klasy, konstruktory i klasy danych w Kotlinie.

Często zadawane pytania

Czy lekcja „Klasy danych” jest bezpłatna?

Tak — pełny tekst „Klasy danych” 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 Android Academy, przejdź na CoddyKit PRO. Kurs Android Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Klasy danych”?

Zwięzłe klasy do przechowywania danych. Ćwiczysz Android 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ąć Android Academy?

Nie wymagamy żadnego doświadczenia. Android 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 4 z 4.

Ile czasu zajmuje lekcja „Klasy danych”?

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 Android Academy?

Tak. Każda lekcja Android 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. Deklarowanie funkcji
  2. Klasy i właściwości
  3. Konstruktory i init
  4. Klasy danych
← Powrót do Android Academy