0Pricing
Kotlin Academy · Урок

Объявление классов данных

Компактные классы моделей

«Объявление классов данных» — бесплатный урок Kotlin Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Kotlin Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Kotlin Academy содержит 4 уроков всего.

Классы для хранения данных

Многие классы существуют только для объединения нескольких значений: пользователя, точки, результата.

Kotlin предоставляет класс данных — краткий способ объявить такие классы моделей со множеством автоматически предоставляемых возможностей.

Объявление класса данных

Добавьте ключевое слово data перед class и перечислите свойства в конструкторе.

Эта единственная строка создаёт полнофункциональную модель.

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

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

Бесплатный toString

Класс данных автоматически создаёт удобочитаемый toString(). При выводе объекта отображаются имя его класса и значения свойств.

Сравните это с обычным классом, который вывел бы непонятное хеш-значение.

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

fun main() {
    val u = User("Bob", 25)
    println(u)
}

Свойства обязательны

Класс данных должен объявлять хотя бы одно свойство в своём основном конструкторе.

Каждый параметр должен быть val или var, чтобы он стал свойством, которое могут использовать сгенерированные функции.

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

fun main() {
    val p = Point(3, 4)
    println(p)
}

Свойства только для чтения и изменяемые свойства

Используйте val для свойств только для чтения, а var — для изменяемых свойств.

Неизменяемые классы данных обычно предпочтительнее, потому что их проще анализировать.

data class Counter(var count: Int)

fun main() {
    val c = Counter(0)
    c.count = 5
    println(c)
}

Значения параметров по умолчанию

Как и любой конструктор, класс данных может иметь значения по умолчанию.

Это позволяет вызывающему коду не указывать параметры, которым не нужно задавать значения.

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

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

Именованные аргументы

Объединяйте классы данных с именованными аргументами, чтобы создание объектов было понятным и самодокументируемым.

Это особенно полезно, когда несколько свойств имеют один и тот же тип.

data class Rect(val width: Int, val height: Int)

fun main() {
    val r = Rect(width = 10, height = 5)
    println(r)
}

Добавление методов

У класса данных по-прежнему может быть тело с собственными функциями и вычисляемыми свойствами.

Сгенерированные функции существуют рядом с тем, что добавили Вы.

data class Circle(val radius: Double) {
    fun area(): Double = 3.14159 * radius * radius
}

fun main() {
    val c = Circle(2.0)
    println(c.area())
}

Свойства вне конструктора

Сгенерированные функции используют только свойства основного конструктора.

Свойство, объявленное в теле класса, является частью объекта, но игнорируется функциями toString, equals и другими.

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)
}

Когда использовать классы данных

Выбирайте класс данных, когда объект в основном хранит значения:

  • объекты передачи данных и модели программных интерфейсов
  • координаты, диапазоны, результаты
  • наборы конфигурации

Не используйте их для классов, построенных вокруг сложного поведения или наследования.

Объединяем всё

Класс данных — это компактное объявление модели:

  • Добавьте в начало data и перечислите свойства
  • Бесплатно получите toString, equals, hashCode, copy
  • Поддерживаются значения по умолчанию, именованные аргументы и дополнительные методы
data class Book(val title: String, val pages: Int = 0)

fun main() {
    val b = Book(title = "Kotlin", pages = 300)
    println(b)
}

Быстрая проверка

Проверьте, насколько хорошо Вы понимаете объявление классов данных.

Итоги

Вы узнали, как объявлять классы данных:

  • Ключевое слово data создаёт стандартные функции
  • Свойства конструктора определяют создаваемое поведение
  • Значения по умолчанию и именованные аргументы делают классы данных гибкими

Далее Вы подробно изучите сгенерированные функции copy и equals.

Часто задаваемые вопросы

Урок «Объявление классов данных» бесплатный?

Да — полный текст урока «Объявление классов данных» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Kotlin Academy, подпишись на CoddyKit PRO. Курс Kotlin Academy содержит 4 уроков всего.

Чему я научусь в уроке «Объявление классов данных»?

Компактные классы моделей Ты практикуешь Kotlin Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Kotlin Academy?

Предыдущий опыт не требуется. Kotlin Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Объявление классов данных»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Kotlin Academy?

Да. Каждый урок Kotlin Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Объявление классов данных
  2. copy и equals
  3. Деструктурирующие объявления
  4. Классы данных в коллекциях
← Назад к Kotlin Academy