Найти в Дзене
Легко в’IT

Собеседования: что такое конструктор?

Что такое конструктор? - могут у тебя спросить на собеседовании. А почему нет? Не смотря на всю очевидность вопроса для программистов, даже начинающих, которые успели попробовать объектно-ориентированные языки. Ну давай начнем с определения. С классного конструктивного, конечно же, а не скучного дескриптивного. Про классы мы уже говорили и даже не единожды, но повторим. Это такие структуры, которые описывают формальным образом на языке программирования какую-нибудь сущность: будь то пользователь, сервис или какая-нибудь форма обратной связи на сайте. Но до того как мы подключим этот класс в коде, он будет просто занимать место в оперативной памяти. А вот чтобы его подключить и начать использовать наиболее удобным способом и существуют конструкторы классов. Приведу пример на Java. Давай опишем гитару, что ли: public class Guitar {
...
public Guitar(guitarType type, Material backMaterial, Material frontMaterial){
this.type = type;
this.backMaterial = backMaterial
this.frontMateri

Что такое конструктор? - могут у тебя спросить на собеседовании. А почему нет? Не смотря на всю очевидность вопроса для программистов, даже начинающих, которые успели попробовать объектно-ориентированные языки.

Ну давай начнем с определения. С классного конструктивного, конечно же, а не скучного дескриптивного.

Про классы мы уже говорили и даже не единожды, но повторим. Это такие структуры, которые описывают формальным образом на языке программирования какую-нибудь сущность: будь то пользователь, сервис или какая-нибудь форма обратной связи на сайте. Но до того как мы подключим этот класс в коде, он будет просто занимать место в оперативной памяти. А вот чтобы его подключить и начать использовать наиболее удобным способом и существуют конструкторы классов. Приведу пример на Java. Давай опишем гитару, что ли:

public class Guitar {
...
public Guitar(guitarType type, Material backMaterial, Material frontMaterial){
this.type = type;
this.backMaterial = backMaterial
this.frontMaterial = frontMaterial
...
}
...
}

Функция, которая называется так же как класс - это и есть так называемый конструктор. Все, что она делает в нашем случае - это изменение свойств гитары, которые определены чуть выше, на их месте троеточие для упрощения: тип гитары, акустика или электро, а еще материал задней и передней части гитары. Пока что это просто класс, который пользы не приносит. Чтобы он пользу принес, надо его создать, вызвав конструктор:

public static void main(String[] args){
Guitar walnutAcoustic = new Guitar(ACOUSTIC, WALNUT, WALNUT)
Guitar spruceAcoustic = new Guitar(ACOUSTIC, SPRUCE, SPRUCE)
Guitar mapleSpruceElectro = new Guitar(ELECTRO, MAPLE, SPRUCE)
}

А вот так мы используем эти классы, как видишь, при помощи нашего конструктора мы создали три экземпляра гитар:

  • акустическая из грецкого ореха
  • акустическая из ели
  • электро-гитара, у которой задняя сторона из клена, а передняя - из ели

Простите меня, любители гитар, может это не лучшее сочетание дерева, но для объяснения должно подойти.

Теперь про нюансы конструкторов классов в той же Java:

  • Конструктор имеет тот же самый идентификатор, что и имя класса.
  • Конструктор не возвращает значения.
  • Конструктор может быть перегружен. То есть можно создать внутри одного класса несколько конструкторов, которые будут иметь то же имя, но разный список параметров. Например, можно создать отдельно конструктор для акустических гитар и добавить параметр количества струн.
  • Если в классе не определены конструкторы, то Java автоматически создаст конструктор по умолчанию (без параметров).
  • Если в классе определен хотя бы один конструктор, то Java не создает конструктор по умолчанию.

Также стоит упомянуть про ключевое слово this. Оно используется для обращения к текущему объекту класса. В конструкторе класса this используется для инициализации переменных класса, чтобы избежать конфликтов с локальными переменными, имеющими те же имена.

Например, в конструкторе класса Guitar, this.type обращается к переменной класса type, а type - к параметру конструктора.

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