Класс Any

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

Синтаксис

kotlinopen class Any

Методы

Класс Any предоставляет следующие методы:

kotlinopen operator fun equals(other: Any?): Boolean
open fun hashCode(): Int
open fun toString(): String

Пример

Создадим простой класс, который неявно наследуется от Any:

kotlinclass Person(val name: String, val age: Int)

val person = Person("John", 25)
println(person.toString())

Результат выполнения кода:

kotlinPerson@4eec7777

Пример

Переопределим метод toString для нашего класса:

kotlinclass Person(val name: String, val age: Int) {
  override fun toString(): String {
    return "Person(name=$name, age=$age)"
  }
}

val person = Person("John", 25)
println(person.toString())

Результат выполнения кода:

kotlinPerson(name=John, age=25)

Пример

Переопределим метод equals для сравнения объектов:

kotlinclass Person(val name: String, val age: Int) {
  override fun equals(other: Any?): Boolean {
    if (this === other) return true
    if (other !is Person) return false
    
    return name == other.name && age == other.age
  }
  
  override fun hashCode(): Int {
    return name.hashCode() * 31 + age
  }
}

val person1 = Person("John", 25)
val person2 = Person("John", 25)
val person3 = Person("Jane", 30)

println(person1 == person2)
println(person1 == person3)

Результат выполнения кода:

kotlintrue
false

Пример

Использование метода hashCode для получения хэш-кода объекта:

kotlinval person = Person("John", 25)
println(person.hashCode())

Результат выполнения кода:

kotlin71988570

Смотрите также

  • ключевое слово class,
    которое используется для объявления классов
  • ключевое слово extends,
    которое используется для наследования классов
  • ключевое слово override,
    которое используется для переопределения методов
  • ключевое слово open,
    которое делает классы и методы наследуемыми