На этом шаге мы приведем общие сведения об инициализации.
В предыдущих шагах мы узнали, как объявлять классы для представления объектов реального мира. В NyetHack игрок определяется свойствами и поведением. Несмотря на всю сложность, которую можно передать через свойства и функции классов, вы пока что видели лишь малую часть способов создания экземпляров класса. Вспомним, как в прошлых шагах был объявлен Player.
class Player {
. . . .
}
Заголовок класса Player довольно прост, поэтому создать экземпляр Player тоже было просто.
fun main() { val player = Player() . . . . }
То есть вызов конструктора класса создает экземпляр класса - этот процесс еще известен как инстанцирование. В дальнейших шагах рассказывается о способах инициализации классов и их свойств. Инициализируя переменную, свойство или экземпляр класса, вы присваиваете начальное значение, пригодное к использованию. Далее мы познакомимся с разными видами конструкторов, приемами инициализации свойств и даже научимся менять правила с помощью поздней и отложенной инициализации.
Примечание по терминологии: с технической точки зрения экземпляр класса создается, когда для него выделяется память, а инициализируется - когда ему присваивается значение. Но на практике эти термины обычно употребляют иначе. Часто под инициализацией подразумевается "все необходимое, чтобы подготовить переменную, свойство или экземпляр класса к использованию", тогда как инстанцирование ограничивается "созданием экземпляра класса". Здесь мы придерживаемся более распространенного значения.
На следующем шаге мы рассмотрим конструкторы.