dir.by  
  Поиск  
Компьютер, программы
Kotlin
 Что такое class в Kotlin? | первичный и вторичный конструктор | блок init 
посмотрели 2359 раз
обновлено: 7 июля 2026
Класс в Kotlin может содержать:
• Конструктор (первичный)
• Конструктор (вторинчный)
• Инициализирующий блок init
• Поля
• Свойства
• Функции
• Вложенные классы
В классе в Kotlin нет деструктора.

Говоря общими словами:
Класс в Kotlin описывает объект.
Kotlin программу можно представить как взаимосвязанные между собой объекты.
Синтаксис
чтобы определить класс
Используем слово class

  Kotlin  
class MyBook
{
   ...
}
Чтобы создать объект класса:
используем Название класса(параметры или без параметров)

  Kotlin  
MyBook("Hello!")


На заметку!
В других языках всегда использовалось слово new
В Java мы писали
  Java  
new MyBook("Hello!")
Первичный и вторичный конструктор. Блок init
Пример 1.
Вторичный конструктор

  Kotlin  
class MyBook
{
     // вторичный конструктор
     constructor(text:String)
     {
     }
}

На заметку!
Вторичный конструктор называется так потому что он внутри класса и определяется словом constructor
  Kotlin  
class MyBook
{
     var bookText:String // поле

     constructor(text:String) // вторичный конструктор
     {
          bookText = text;
     }

     fun Show() // метод
     {
          println(bookText.toString())
     }
}

fun main() {
     val book1 = MyBook("Hello!") // создаем объект, вызовется вторичный конструктор

     book1.Show() // вызываем метод
}
Пример 2.
Первичный конструктор

  Kotlin  
class MyBook constructor(var bookText:String)
{
}


 
 
 
 
 

 
 
 
 

Сокращенный вариант:
Можно убрать слово constructor
  Kotlin  
class MyBook(var bookText:String)
{
}
На заметку!
Певичный конструктор называется так потому что находится в описании класса
Первичный конструктор не может содержать в себе исполняемого кода.
Класс может иметь только один первичный конструктор.

  Kotlin  
class MyBook constructor(var bookText:String) // первичный конструктор
{
     fun Show() // метод
     {
          println(bookText)
     }
}

fun main() {
     val book1 = MyBook("Hello!") // создаем объект и вызовется первичный конструктор
     book1.bookText = "123" // На заметку! можем использовать bookText даже тут

     book1.Show() // вызываем метод
}


Сокращенный вариант:
Можно убрать слово constructor
  Kotlin  
class MyBook(var bookText:String) // первичный конструктор
{
     fun Show() // метод
     {
          println(bookText)
     }
}
...


Внимание! Если хотите запретить использование bookText вне класса тогда нужно добавить private
  Kotlin  
class MyBook(privte var bookText:String) // первичный конструктор
{
     fun Show() // метод
     {
          println(bookText) // bookText можно тут использовать
     }
}

fun main() {
     val book1 = MyBook("Hello!") // создаем объект и вызовется первичный конструктор
     book1.bookText = "123" // Ошибка! Cannot access
}
Пример 3.
Первичный конструктор и блок init
На заметку!
Первичный конструктор не может содержать в себе исполняемого кода.
Если нам надо выполнить какой-то инициализирующий код, то он может быть помещён в соответствующие блоки, которые помечаются словом init.
При создании объкта класса блоки инициализации выполняются в том порядке, в котором они идут в теле класса, чередуясь с инициализацией свойств.
  Kotlin  
class MyShop(name: String, street:String) // первичный конструктор
{
     val shopName = "Hello $name"

     // блок init
     init {
          println(shopName)
     }

     val streetName = "Go to $street"

     // блок init
     init {
          println(streetName)
     }
}

fun main() {

     val shop1 = MyShop("Fruits market", "Turkey street 25") // создаем объект

}
Пример 4.
Первичный и вторичный конструкторы
На заметку!
Если у класса есть первичный конструктор и вторичный конструктор, тогда вторичный конструктор должен вызывать первичный конструктор используя слово this.
this(параметры первичного консруктора)

  Kotlin  
class MyShop(val shopName:String) // первичный конструктор
{
     private val shopFruits:MutableList<String> = mutableListOf()

     // вторичный конструктор
     constructor(fruits:List<String>, name:String) : this(name)
     {
          shopFruits.addAll(0, fruits)
     }

     fun Show()
     {
          println("$shopName has fruits:")
          for (item in shopFruits)
               println(item)
     }
}

fun main() {

     val shop1:MyShop = MyShop(listOf("orange", "banana"), "Market")
     shop1.Show()
}


Запустим программу и увидим результат:
Market has fruits:
orange
banana
Пример 5.
Нет конструкторов, но есть блок init

  Kotlin  
class MyShop {

     // блок init
     init {
          ...
     }
}

На заметку!
Если у класса нет первичного и вторичного конструктора все равно блок init выполнится.
  Kotlin  
class MyShop
{
     private val shopFruits:MutableList<String> = mutableListOf()

     // блок init
     init {
          shopFruits.addAll(listOf("orange", "banana"))
     }
    
     fun Show()
     {
          for (item in shopFruits)
               println(item)
     }
}

fun main() {
     val shop1:MyShop = MyShop()
     shop1.Show()
}


Запустим программу и увидим результат:
orange
banana
Пример 6.
Нет конструкторов и нет блока init
На заметку!
Если у класса нет первичного конструктора и нет вторичного конструктора, у этого класса автоматически сгенерируется пустой невидимый конструктор без параметров.
Видимость этого конструктора будет public.
  Kotlin  
class MyShop
{
     var shopFruits:MutableList<String> = mutableListOf()

     fun Show()
     {
          for (item in shopFruits)
               println(item)
     }
}

fun main() {

     val shop1:MyShop = MyShop()
     shop1.shopFruits.addAll(listOf("orange", "banana"))
     shop1.Show()
}
 
← Предыдущая тема
Создаем коллекции list, set, map и массив array в Kotlin
 
Следующая тема →
lateinit это поздняя инициализация для поля class | Kotlin
 
Ваши Отзывы ... комментарии ...
   
Вашe имя
Ваш комментарий (www ссылки может добавлять только залогиненный пользователь)

  Объявления  
  Объявления  
 
Что такое Kotlin ?
Почему самой популярной средой разработки для Kotlin является IntelliJ IDEA?
Скачать и установить IntelliJ IDEA для изучения Kotlin
Создание нового консольного проекта для изучения Kotlin | IntelliJ IDEA
Устанавливаем значение
Объявлем переменную и устанавливаем значение в Kotlin | val, var, lateinit, константа: const val, глобальная переменная: companion object
null
null значение используем символ ? и ?. и !! и ?: и !!. и ?. в Kotlin
Int, Float, Boolean, Char ...
Целые числа в Kotlin: Byte, UByte, Short, UShort, Int, UInt, Long, ULong
Десятичные числа в Kotlin: Float, Double
Флаг со значениями true или false в Kotlin это: Boolean
Символ в Kotlin это: Char
Конвертация числа в текст на языке Kotlin | Int → String
String
Строка, текст в Kotlin это: String
Интерполяция строк в Kotlin. Пример: val address:String = "${street}, ${country}"
В чем отличие String и StringBuilder ?
Enum
Что такое перечисление (enum) в Kotlin ?
Как найти enum по значению в Kotlin ?
Функция
fun() { ... } - это функция в Kotlin. Функция нужна чтобы выполнить действие.
Лямбда функция
Лямбда функция в Kotlin. Пример1: var myFunc1 : (a:Int, b:Int) -> Int = { p1, p2 -> p1 + p2 };
Коллекции и массивы
Создаем коллекции list, set, map и массив array в Kotlin
Class
Что такое class в Kotlin? Пример: class MyBook { ... } | первичный и вторичный конструктор | блок init
lateinit это поздняя инициализация для поля class | Kotlin
class, который наследует от интерфейса в Kotlin | Пример: class MyBook : IBook { ...}
Безымянный class, который наследует от интерфейса в Kotlin | Пример: val book1 = object : IBook { ...}
Общий, template class в Kotlin | Пример: class MyBook<T> { ... }
Пишем программу
Консольное Kotlin приложение работает как Android Jetpack Compose

  Ваши вопросы присылайте по почте: info@dir.by  
Яндекс.Метрика