Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Ответы по Технологии программирования / Конструктор класса_ описание и назначение

.docx
Скачиваний:
7
Добавлен:
21.05.2015
Размер:
8.61 Кб
Скачать

Конструктор предназначен для инициализации объекта. Он вызывается авто­матически при создании объекта класса с помощью операции new. Имя конст­руктора совпадает с именем класса. Ниже перечислены свойства конструкторов:

  • Конструктор не возвращает значение, даже типа void.

  • Класс может иметь несколько конструкторов с разными параметрами для раз­ных видов инициализации.

  • Если программист не указал ни одного конструктора или какие-то поля не были инициализированы, полям значимых типов присваивается нуль, полям ссылочных типов — значение null.

  • Конструктор, вызываемый без параметров, называется конструктором по умолчанию.

До сих пор мы задавали начальные значения полей класса при описании класса.Это удобно в том случае, когда для всех экземпляров класса начальные значения некоторого поля одинаковы. Если же при создании объектов требуется присваивать полю разные значения, это следует делать в конструкторе.

Конструктор инициализирует объект при его создании. Он имеет такое же имя,что и сам класс, а синтаксически подобен методу. Однако в определении конструкторов не указывается тип возвращаемого значения. Формат записи конструктора такой:

доступ имя_класса{)

{

// тело конструктора

}

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

Все классы имеют конструкторы независимо от того, определите вы их или нет, поскольку С# автоматически предоставляет конструктор по умолчанию, который инициализирует все переменные-члены, имеющие тип значений, нулями, а переменные-члены ссылочного типа — null-значениями. Но если вы определите собственный конструктор, конструктор по умолчанию больше не используется.

Вот пример использования конструктора:

// Использование простого конструктора.

usingSystem;

classMyClass {

publicint x;

publicMyClass() {

x = 10;

}

}

c l a s sConsDemo {

p u b l i c s t a t i c void Main() {

MyClass t l = new MyClass();

MyClass t 2 = new MyClass();

Co n s o l e .W r i t e L i n e ( t l . x + " " + t 2 . x ) ;

}

}

Обратите внимание на public-определение конструктора, которое позволяет вызывать его из кода, определенного вне класса MyClass. Этот конструктор присваивает переменной экземпляра х значение 10. Конструктор MyClass () вызывается оператором new при создании объекта класса MyClass. Например, при выполнении строки MyClasstl = newMyClass();

для объектаtl вызывается конструктор MyClass (), который присваивает переменной экземплярраtl.x значение 10. То же самое справедливо и в отношении объекта t2, т.е. в результате создания объекта t2 значение переменной экземпляра t2.x также станет равным 10.

3.1.5.1 Параметризованные конструкторы

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

// Использование параметризованного конструктора.

using System;

classMyClass {

publicint x;

publicMyClass(inti) {

x = i;

}}

classParmConsDemo {

public static void Main() {

MyClass t1 = new MyClass(10);

MyClass t2 = new MyClass(88);

Console.WriteLine (t1.x + " " + t2.x);

}

}

Результат выполнения этой программы выглядит так:

10 88

В конструкторе MyClass () этой версии программы определен один параметр с именем i, который используется для инициализации переменной экземпляра х. Таким образом, при выполнении строки кода

MyClasst1 = newMyClass(10);

параметру i передается значение 10, которое затем присваивается переменной экземпляра х.