Классы
Классы в Kotlin объявляются с помощью использования ключевого слова class:
class Invoice {
}
Объявление класса состоит из имени класса, заголовка (указания типов его параметров, основного конструктора и т.п) и тела класса, заключённого в фигурные скобки
Создание экземпляров классов
Для создания экземпляра класса конструктор вызывается так, как если бы он был обычной функцией:
val invoice = Invoice()
val customer = Customer("Joe Smith")
Наследование
Для всех классов в языке Kotlin родительским суперклассом является класс Any. Он также является родительским классом для любого класса, в котором не указан какой-либо другой родительский класс:
lass Example
У Any есть три метода: equals(), hashCode() и toString(). Эти методы определены для всех классов в Kotlin.
По умолчанию все классы в Kotlin имеют статус final, который блокирует возможность наследования.
Чтобы сделать класс наследуемым, его нужно пометить ключевым словом open.
open class Base
Для явного объявления суперкласса мы помещаем его имя за знаком двоеточия в оглавлении класса:
open class Base(p: Int)
class Derived(p: Int) : Base(p)
Если у класса нет основного конструктора, тогда каждый последующий дополнительный конструктор должен включать в себя инициализацию базового типа с помощью ключевого слова super или давать отсылку на другой конструктор, который это делает.
любые дополнительные конструкторы могут ссылаться на разные конструкторы базового типа