Расскажи про все виды классов в Kotlin

«Расскажи про все виды классов в Kotlin» — вопрос из категории Kotlin, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Kotlin есть несколько видов классов:

  1. Обычные классы – базовые классы.
class MyClass { ... }
  1. Data-классы – автоматически генерируют equals(), hashCode(), toString(), copy().
data class User(val name: String, val age: Int)
  1. Sealed-классы – ограниченная иерархия (все подклассы известны).
sealed class Result {
    data class Success(val data: String) : Result()
    data class Error(val message: String) : Result()
}
  1. Enum-классы – фиксированный набор значений.
enum class Direction { NORTH, SOUTH, EAST, WEST }
  1. Абстрактные классы – нельзя создать экземпляр, могут содержать абстрактные методы.
abstract class Animal {
    abstract fun makeSound()
}
  1. Inner-классы – имеют доступ к членам внешнего класса.
class Outer {
    inner class Inner { ... }
}
  1. Object-классы (Singleton) – единственный экземпляр.
object Singleton { ... }
  1. Companion-объекты – статические методы/поля.
class MyClass {
    companion object { ... }
}
  1. Inline-классы – обёртки для оптимизации (с Kotlin 1.5).
inline class Password(val value: String)