• Конструкторы класса применяются для создания нового объекта.
• Конструкторы класса применяются для начальной инициализации полей класса.
• Конструктор класса вызывается с помощью ключевого слова new.
• Имя конструктора должно совпадать с именем класса.
• Конструктор, как и обычные методы класса, может принимать параметры или быть без параметров.
• В классе могут быть несколько конструкторов.
• Если в классе определяются несколько конструкторов, они должны отличаться по числу параметров.
• Если в классе не определено ни одного конструктора C# неявно создает пустой конструктор без параметров. Конструктор без параметров называется конструктором по умолчанию. Конструктор по умолчанию не будет создаваться, если в классе определен другой конструктор с параметрами или без. В конструкторе по умолчанию инициализируются поля класса значениями по умолчанию.
• В общем виде объявление конструктора выглядит так:
- class Имя_Класса
- {
- Модификатор_Доступа Имя_Класса() { }
- }
• Конструкторы не могут иметь возвращаемого значения в отличие от других методов класса.
Пример использования конструктора:
- class Sample {
- private int _sampleVariable;
- // Конструктор без параметров
- public Sample()
- {
- _sampleVariable = -1;
- }
- // Конструктор с одним параметром
- public Sample(int sampleVariable)
- {
- _sampleVariable = sampleVariable;
- }
- }
Порядок вызова конструкторов при наследовании
Конструкторы классов при наследовании вызываются в порядке от базового к производному. Этот порядок можно посмотреть запустив следующую программу:
- class A {
- public A() {
- Console.WriteLine( "Вызов конструктора класса A" );
- }
- }
- class B : A {
- public B() {
- Console.WriteLine( "Вызов конструктора класса B" );
- }
- }
- class C : B {
- public C() {
- Console.WriteLine( "Вызов конструктора класса C" );
- }
- }
- public class Person {
- static void main() {
- C c = new C();
- }
- }
- // Вывод:
- // Вызов конструктора класса A
- // Вызов конструктора класса B
- // Вызов конструктора класса C
Вызов конструктора базового класса
Иногда может потребоваться явный вызов конструктора базового класса.
Например, если в базовом классе есть несколько конструкторов, и требуется вызвать какой то конкретный.
Для вызова конструктора базового класса применяется ключевое слово base.
Пример вызова конструктора базового класса:
- class Point {
- public int X { get; set; }
- public int Y { get; set; }
- public Point() { }
- public Point( int x, int y ) {
- X = x;
- Y = y;
- }
- }
- class Point3D : Point
- {
- public int Z { get; set; }
- public Point3D() { }
- public Point3D( int x, int y, int z )
- : Point( x, y ) // Вызов конструктора базового класса
- {
- Z = z;
- }
- }
Вызов конструктора из другого конструктора
Вызов конструктора из другого конструктора в том же классе возможен при использовании ключевого слова this.
- class Sample
- {
- private int _sampleVariable;
- private int _anotherVariable;
- public Sample( int sampleVariable )
- {
- _sampleVariable = sampleVariable;
- }
- public Sample( int sampleVariable, int anotherVariable )
- : this ( sampleVariable ) // Вызов конструктора Sample( int )
- {
- _anotherVariable = anotherVariable;
- }
- }
Модификаторы доступа применяемые к конструкторам
К конструкторам классов в C# могут применяться все модификаторы доступа, которые могут применяться к членам класса – это public, private, protected, internal, protected internal.
Однако если объявить конструктор класса с модификатором доступа private, то экземпляры такого класса нельзя будет создать.
Комментариев нет:
Отправить комментарий