Умалчиваемый конструктор, как и любой другой метод класса, можно перегрузить. Перегрузка метода заключается в том, что в классе объявляется одноименный метод. Чтобы компилятор «понял», о каком методе идет речь, набор входных параметров перегруженного метода должен отличаться от параметров оригинального — это обязательное условие. При необходимости можно сколько угодно раз перегружать метод, лишь бы у всех перегруженных методов наборы входных параметров отличались друг от друга и от параметров оригинального метода.
Добавим в класс HelloClass два целочисленных поля intx и inty и перегрузим умалчиваемый конструктор для их инициализации (листинг 3.2, файл Ch03\HelloClass\Program.cs).
Листинг 3.2. Перегрузка умалчиваемого конструктора
using System;
class HelloClass
{
// Конструктор по умолчанию:
public HelloClass()
{
Console.WriteLine("Вызов умалчиваемого конструктора");
}
// Перегруженный конструктор:
public HelloClass(int x, int y)
{
Console.WriteLine("Вызов перегруженного конструктора");
intx = x;
inty = y;
}
// Объявляем новые поля класса:
public int intx, inty;
// Точка входа программы:
public static void Main()
{
HelloClass hc1 = new HelloClass();
Console.WriteLine("hc1.intx = {0}\nhc1.inty = {1}\n",
hc1.intx, hc1.inty);
HelloClass hc2 = new HelloClass(100, 200);
Console.WriteLine("hc2.intx = {0}\nhc2.inty = {1}\n",
hc2.intx, hc2.inty);
Console.ReadLine();
}
}
Для вывода сообщений в методе Main() используется форматирующая строка, то есть стока, в текст которой вставлены форматирующие символы. Подробнее о форматирующих символах говорится в главе 4.
Как видим, в результате работы умалчиваемого конструктора поля инициализируются нулями, в то время как перегруженный конструктор помещает в них нужные значения.
0 коммент.:
Отправить комментарий