АКЦИЯ: бесплатные месячные курсы по созданию сайтов
на выбор: верстка, JavaScript, PHP, Python или фреймворки. Сегодня последний день для записи! Жми!
1275 of 1310 menu
Новый формат обучения! Репетиторство по программированию. Есть еще 3 свободных места! Жми для подробностей.

Конструктор

Конструктор в Kotlin представляет собой специальный блок кода, который вызывается при создании экземпляра класса с помощью оператора new. Конструктор выполняет инициализацию свойств класса и подготовку объекта к использованию. В Kotlin различают первичный и вторичные конструкторы.

Синтаксис первичного конструктора

class ClassName constructor(param1: Type1, param2: Type2) { // тело класса }
class ClassName(param1: Type1, param2: Type2) { // тело класса }

Синтаксис вторичного конструктора

class ClassName { constructor(param1: Type1, param2: Type2) { // код конструктора } }

Пример

Создадим класс Person с первичным конструктором, принимающим два параметра:

class Person(val name: String, val age: Int) val person = Person("John", 25) println("Name: ${person.name}, Age: ${person.age}")

Результат выполнения кода:

String "Name: John, Age: 25"

Пример

Использование ключевого слова constructor явно в первичном конструкторе:

class Person constructor(val name: String, val age: Int) val person = Person("Alice", 30) println("Name: ${person.name}, Age: ${person.age}")

Результат выполнения кода:

String "Name: Alice, Age: 30"

Пример

Класс с вторичным конструктором:

class Person { var name: String = "" var age: Int = 0 constructor(name: String, age: Int) { this.name = name this.age = age } } val person = Person("Bob", 35) println("Name: ${person.name}, Age: ${person.age}")

Результат выполнения кода:

String "Name: Bob, Age: 35"

Пример

Класс с несколькими вторичными конструкторами:

class Person { var name: String = "" var age: Int = 0 var city: String = "Unknown" constructor(name: String, age: Int) { this.name = name this.age = age } constructor(name: String, age: Int, city: String) { this.name = name this.age = age this.city = city } } val person1 = Person("Charlie", 40) val person2 = Person("Diana", 28, "New York") println("Person1: ${person1.name}, ${person1.age}, ${person1.city}") println("Person2: ${person2.name}, ${person2.age}, ${person2.city}")

Результат выполнения кода:

String "Person1: Charlie, 40, Unknown" String "Person2: Diana, 28, New York"

Пример

Использование блока init для инициализации в первичном конструкторе:

class Person(val name: String, val age: Int) { init { println("Person $name created with age $age") } } val person = Person("Eva", 32)

Результат выполнения кода:

String "Person Eva created with age 32"

Пример

Конструктор с модификаторами доступа:

class Person private constructor(val name: String) { companion object { fun create(name: String): Person { return Person(name) } } } val person = Person.create("Frank") println("Name: ${person.name}")

Результат выполнения кода:

String "Name: Frank"

Смотрите также

  • ключевое слово class,
    которое используется для объявления классов
  • ключевое слово init,
    которое используется для блоков инициализации
  • ключевое слово this,
    которое ссылается на текущий экземпляр класса
  • ключевое слово companion,
    которое используется для объявления companion object