Ответ
В Java конструкторы объявляются как методы с именем класса, могут быть перегружены. В Kotlin используется ключевое слово constructor, но его можно опустить, если нет модификаторов доступа или аннотаций.
Основные отличия:
- В Kotlin primary конструктор объявляется в заголовке класса:
class Person(val name: String, var age: Int)
- Secondary конструкторы вызывают primary через
this():
class Person(val name: String) {
constructor(name: String, age: Int) : this(name) { /*...*/ }
}
-
В Kotlin инициализация в primary конструкторе выполняется в блоке
init -
Kotlin автоматически генерирует getters/setters для свойств, объявленных в конструкторе с
val/var -
В Kotlin параметры конструктора могут иметь значения по умолчанию