Порядок вызова конструкторов (350 Часть I. Язык C#)

В связи с изложенными выше в отношении наследования и иерархии классов может возникнуть следующий резонный вопрос: когда создается объект производного класса и какой конструктор выполняется первым — тот, что определен в производном классе, или же тот, что определен в базовом классе? Так, если имеется базовый класс А и производный класс В, то вызывается ли конструктор класса А раньше конструктора класса В? Ответ на этот вопрос состоит в том, что в иерархии классов конструкторы вызываются по порядку выведения классов: от базового к производному. Более того, этот порядок остается неизменным независимо от использования ключевого слова base. Так, если ключевое слово base не используется, то выполняется конструктор по умолчанию, т.е. конструктор без параметров.

// Продемонстрировать порядок вызова конструкторов.

using System;

// Создать базовый класс.

class А

{

public А()

{

Console.WriteLine("Конструирование класса А.");

}

}

// Создать класс, производный от класса А.

class В: А

{

public В()

{

Console.WriteLine("Конструирование класса В.");

}

}

// Создать класс, производный от класса В.

class С: В

{

public С()

{

Console.WriteLine("Конструирование класса С.");

}

}

class OrderOfConstruction

{

static void Main()

{

С с = new С();

}

}

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

Конструирование класса А.

Конструирование класса В.

Конструирование класса С.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: