В этой главе мы узнаем о конструкторах в Kotlin. У Kotlin есть два типа конструктора — один является основным конструктором, а другой — вторичным конструктором . Один класс Kotlin может иметь один первичный конструктор и один или несколько вторичных конструкторов. Java-конструктор инициализирует переменные-члены, однако в Kotlin первичный конструктор инициализирует класс, тогда как вторичный конструктор помогает включать некоторую дополнительную логику при инициализации того же самого. Основной конструктор может быть объявлен на уровне заголовка класса, как показано в следующем примере.
class Person(val firstName: String, var age: Int) { // class body }
В приведенном выше примере мы объявили основной конструктор внутри круглых скобок. Среди этих двух полей имя доступно только для чтения, так как оно объявлено как «val», а возраст поля можно редактировать. В следующем примере мы будем использовать основной конструктор.
fun main(args: Array<String>) { val person1 = Person("TutorialsPoint.com", 15) println("First Name = ${person1.firstName}") println("Age = ${person1.age}") } class Person(val firstName: String, var age: Int) { }
Приведенный выше фрагмент кода автоматически инициализирует две переменные и предоставит следующий вывод в браузере.
First Name = TutorialsPoint.com Age = 15
Как упоминалось ранее, Kotlin позволяет создавать один или несколько вторичных конструкторов для вашего класса. Этот вторичный конструктор создается с помощью ключевого слова «конструктор». Это требуется всякий раз, когда вы хотите создать более одного конструктора в Kotlin или когда вы хотите включить больше логики в первичный конструктор, и вы не можете этого сделать, потому что первичный конструктор может быть вызван некоторым другим классом. Взгляните на следующий пример, где мы создали вторичный конструктор и используем приведенный выше пример для его реализации.
fun main(args: Array<String>) { val HUman = HUman("TutorialsPoint.com", 25) print("${HUman.message}"+"${HUman.firstName}"+ "Welcome to the example of Secondary constructor, Your Age is-${HUman.age}") } class HUman(val firstName: String, var age: Int) { val message:String = "Hey!!!" constructor(name : String , age :Int ,message :String):this(name,age) { } }
Примечание. Можно создать любое количество вторичных конструкторов, однако все эти конструкторы должны вызывать первичный конструктор прямо или косвенно.
Приведенный выше фрагмент кода выдаст следующий вывод в браузере.