На этом шаге мы рассмотрим задание значений аргументов по умолчанию.
Объявляя конструктор, также можно указать значения по умолчанию, которые получат параметры в отсутствие соответствующих им аргументов. Вы уже видели аргументы по умолчанию в контексте функций, в случае с главными и вспомогательными конструкторами они работают абсолютно так же. Например, установите значение по умолчанию 100 для healthPoints в объявлении главного конструктора как в следующем примере.
class Player (_name: String, var healthPoints: Int = 100, val isBlessed: Boolean, private val isImmortal: Boolean) { var name = _name get() = field.capitalize() private set(value) { field = value.trim() } constructor(name: String) : this(name, isBlessed = true, isImmortal = false) { if (name.toLowerCase() == "kar") healthPoints = 40 } . . . . }
Рис.1. Объявление аргумента по умолчанию в конструкторе (Player.kt)
Добавив значение по умолчанию для параметра healthPoints в главный конструктор, вы можете убрать из объявления вспомогательного конструктора передачу аргумента healthPoints в главный конструктор. Это дает еще один вариант создания экземпляра Player: с аргументом и без аргумента для healthPoints.
// Player создается с 64 очками здоровья вызовом главного конструктора val player = Player("Madrigal", 64, true, false) // Player создается со 100 очками здоровья вызовом главного конструктора val player = Player("Madrigal", true, false) // Player создается со 100 очками здоровья вызовом вспомогательного // конструктора val player = Player("Madrigal")
На следующем шаге мы рассмотрим именованные аргументы.