Первичный конструктор является частью заголовка класса и определяется сразу после имени класса:
Конструкторы, как и обычные функции, могут иметь параметры. Так, в данном случае конструктор имеет параметр _name, который представляет тип String.
Через параметры конструктора мы можем передать извне данные и использовать их для инициализации объекта.
При этом первичный конструктор в отличие от функций не определяет никаких действий, он только может принимать данные извне через параметры.
Если первичный конструктор не имеет никаких аннотаций или модификаторов доступа, как в данном случае, то ключевое слово constructor можно опустить:
Значения параметров первичного конструктора можно использовать внутри класса, например, передать их значения переменным класса:
Стоит отметить, что класс может иметь только один первичный конструктор.
И также в классе могут быть одновременно и первичный, и вторичные конструкторы.
Однако если для класса определен первичный конструктор, то вторичный конструктор должен вызывать первичный с помощью ключевого слова this:
Здесь в классе People определен первичный конструктор, который принимает значение для установки свойства name:
И также добавлен вторичный конструктор. Он принимает два параметра: _name и _age
С помощью ключевого слова this вызывается первичный конструктор, поэтому через этот вызов необходимо передать значения для параметров первичного конструктора. В частности, в первичный конструктор передается значение параметра _name. В самом вторичном конструкторе устанавливается значение свойства age.
Таким образом, при вызове вторичного конструктора вначале вызывается первичный конструктор, срабатывает блок инициализатора, который устанавливает свойство name. Затем выполняются собственно действия вторичного конструктора, который устанавливает свойство age.
Используем данную модификацию класса People:
В функции main создаются два объекта People.
Для создания объекта name1 применяется первичный конструктор, который принимает один параметр.
Для создания объекта name2 применяется вторичный конструктор с двумя параметрами.
Выведем на экран: