Вопрос, кстати, довольно популярный. Среди джуниоров точно, но и повыше уровнем встречается. Давайте попробуем ответить. Довольно часто бывает, что мы создаем классы, которые предназначены только для хранения данных. Например, создаем класс Cat с именем Барсик и возрастом 2. И больше там ничего не происходит. В котлин такие классы называются дата-классами: data class Cat(val name: String, val age: Int) Требования для дата-классов: А вот теперь самое интересное, почему все любят дата-классы. Компилятор автоматически создаст кучу методов на основе параметров из основного конструктора. Например, для data class Cat(val name: String, val age: Int): Дата-классы могут наследоваться от других классов и расширять их. Если мы не хотим, чтобы какое-то поле из конструктора использовалось при генерации методов, то это поле надо вынести в тело класса: data class Cat(val name: String) { val age: Int = 2 } Но тут важный момент. В equals тогда будет использоваться только имя, так что если мы сравним дв