Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции ЛИПО .doc
Скачиваний:
3
Добавлен:
17.08.2019
Размер:
420.86 Кб
Скачать

Конструкторы экземпляра

Конструктор экземпляра класса представляет собой специальный метод, запускаемый по ключевому слову new. Он используется для инициализации переменных и других операций при создании объекта.

Определение конструктора экземпляра представлено в следующем синтаксическом блоке

Определение_конструктора_экэемпляра::=

[<Спецификатор_конструктора>] <Идентификатор__конструктора> ([<Список_формальных_параматров> ] )

[<Инициализатор_конструктора> ]

<Тело_конструктора>

где:

<Спецификатор_конструктора>

::= private

;:= public

::= protected

::= internal

<Инициализатор_конструктора>

::= : base ( [<Список_аргументов>] )

::= : this ( [<Список_аргументов>] )

{

<Операторы>

}

Стоит отметить, что Идентификатор_конструктора должен быть таким же, как идентификатор его класса. Скажем, конструктор класса Car также должен называться Car. Конструктор экземпляра не возвращает значения, поэтому тип возвращаемого зна­чения не указывается (не используется даже ключевое слово void). <Инициализатор_конструктора> вызывает исполнение другого конструктора экзем­пляра до того как исполнить операторы исходного.

Чтобы включить конструктор в класс, необходимо разместить его внутри блока опреде­ления класса вместе с другими элементами.

С конструктором экземпляра может применяться необязательный спецификатор доступности private или public. Он управляет доступностью конструктора так же, как переменных и методов экземпляра, однако имеются и различия

Аналогично тому как в заголовке обычного метода, в объявлении конструктора экземпляра используются круглые скобки, включающие список формальных параметров. Значения аргументов передаются этим параметрам во время создания объекта с помощью ключевого слова new.

Подобно своим методам, конструктор экземпляра может быть перегружен путем объявления нескольких конструкторов одного класса с разными списками фор­мальных параметров.

Если класс содержит несколько конструкторов экземпляра (которые, таким образом, являются перегруженными), можно дополнительно указать конструктор того же клас­са, который будет исполняться перед операторами объявленного конструктора. Для этого после списка формальных параметров размешается инициализатор конструктора: this ( [<Список_аргументов>] ). Среда исполнения запускает тот конструктор экземпляра класса, список формальных параметров которого совпадает со списком аргументов ини­циализатора.

Конструктор экземпляра содержит тело, подобное телу метода. Это означает, что оно может состоять из пустого оператора (точка с запятой) или группы операторов, заклю­ченных в пару фигурных скобок. При вызове конструктора операторы исполняются в той же последовательности, как и при вызове метода. Однако они должны содержать только команды, непосредственно связанные с инициализацией и созданием объекта.

Вызов конструктора экземпляра

Синтаксис языка С# при создании объекта с ключевым словом new требует исполь­зовать скобки после имени класса, например:

Car myCar = new Car();

Оператор new Car() создает новый объект класса Car и возвращает ссылку на него, которая затем присваивается переменной myCar. Однако есть у этого оператора и дру­гое назначение: он запускает конструктор экземпляра подобно тому, как осуществляет­ся вызов обычного метода. Скобки после имени класса (в данном случае Car) могут включать список аргумен­тов так же как в вызове метода. Он должен соответство­вать списку формальных параметров конструктора. При наличии нескольких конструкторов экземпляра будет исполняться тот, чей спи­сок формальных параметров совпадает со списком аргументов.

Конструктор экземпляра с пустым списком формальных параметров называется кон­структором экземпляра по умолчанию или конструктором экземпляра без аргументов.