Ответы по Технологии программирования / Конструктор класса_ описание и назначение
.docxКонструктор предназначен для инициализации объекта. Он вызывается автоматически при создании объекта класса с помощью операции 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, которое затем присваивается переменной экземпляра х.