Учебники

Котлин — Конструкторы

В этой главе мы узнаем о конструкторах в Kotlin. У Kotlin есть два типа конструктора — один является основным конструктором, а другой — вторичным конструктором . Один класс Kotlin может иметь один первичный конструктор и один или несколько вторичных конструкторов. Java-конструктор инициализирует переменные-члены, однако в Kotlin первичный конструктор инициализирует класс, тогда как вторичный конструктор помогает включать некоторую дополнительную логику при инициализации того же самого. Основной конструктор может быть объявлен на уровне заголовка класса, как показано в следующем примере.

class Person(val firstName: String, var age: Int) {
   // class body
}

В приведенном выше примере мы объявили основной конструктор внутри круглых скобок. Среди этих двух полей имя доступно только для чтения, так как оно объявлено как «val», а возраст поля можно редактировать. В следующем примере мы будем использовать основной конструктор.

Live Demo

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 или когда вы хотите включить больше логики в первичный конструктор, и вы не можете этого сделать, потому что первичный конструктор может быть вызван некоторым другим классом. Взгляните на следующий пример, где мы создали вторичный конструктор и используем приведенный выше пример для его реализации.

Live Demo

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) {
   }
}

Примечание. Можно создать любое количество вторичных конструкторов, однако все эти конструкторы должны вызывать первичный конструктор прямо или косвенно.

Приведенный выше фрагмент кода выдаст следующий вывод в браузере.