В Kotlin первичный конструктор объявляется прямо в заголовке класса, сразу после имени класса. Это принципиально отличается от Java, где конструкторы всегда определяются как отдельные блоки внутри тела класса.
Параметры первичного конструктора можно объявить как свойства класса, добавив ключевые слова val (неизменяемое) или var (изменяемое):
class Person(val firstName: String, var age: Int)
Эта одна строка одновременно объявляет конструктор и его свойства — никакого дополнительного шаблонного кода не требуется.
val/varclass Person {
private final String firstName;
private int age;
public Person(String firstName, int age) {
this.firstName = firstName;
this.age = age;
}
}
Если нужна логика инициализации, Kotlin предоставляет блок init, который выполняется в рамках первичного конструктора:
class Person(val firstName: String, var age: Int) {
init {
require(age >= 0) { "Age cannot be negative" }
}
}
val/var, автоматически становятся свойствами классаinit для любой дополнительной логики инициализацииval/var доступны только во время инициализации и не сохраняются как свойстваВ Kotlin параметры, объявленные в первичном конструкторе без ключевых слов val или var, автоматически сохраняются как свойства класса, доступные на протяжении всего времени жизни объекта.
Новый — ещё не проверен сообществом
Вы