Перейти к содержанию

🗒 Задача

Создай обычный класс RegularBook и data class DataBook, каждый из которых содержит два свойства: название и автор.

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

Выведи результат сравнения в консоль для каждой пары объектов. Объясни разницу в выводе, используя комментарий в коде.

❌ Ошибки

✏️ Комментарии

Верно! Обычные классы сравниваются по ссылке, а data классы - по содержимому.
в Котлин сравнение через `equals` то же самое, что и через `==`. И так как среда разработки дополнительно сама рекомендует использовать `==`, предлагаю следовать рекомендациям.
Согласно ТЗ требуется сравнивать объекты целиком, а не их свойства по отдельности.
Да все верно, если быть еще более точным - используется метод equals который по-умолчанию сравнивает ссылки на объекты.
Однако ты можешь добавить в RegularBook метод `override fun equals(other: Any?): Boolean` задав в нем код для сравнения объектов

🧾 Решение

class RegularBook(
    val title: String,
    val author: String
)

data class DataBook(
    val title: String,
    val author: String
)

fun main() {
    val regularBook1 = RegularBook("1984", "George Orwell")
    val regularBook2 = RegularBook("1984", "George Orwell")
    println("Regular Books Equality: ${regularBook1 == regularBook2}")  // Output: false

    val dataBook1 = DataBook("1984", "George Orwell")
    val dataBook2 = DataBook("1984", "George Orwell")
    println("Data Books Equality: ${dataBook1 == dataBook2}")  // Output: true
}

// Верно! Обычные классы сравниваются по ссылке, а data классы - по содержимому.