Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LR_3_Robota_z_polimorfnimi_klasami_ta_interfey.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
102.36 Кб
Скачать

2 Методичні вказівки

2.1 Ініціалізатори об'єктів

Традиційно в мовах об'єктно-орієнтованого програмування для ініціалізації об'єктів застосовують конструктори з параметрами. Але іноді таких конструкторів не вистачає і тоді після створення об'єктів значення необхідних властивостей встановлюють вручну. Використовуючи версію 3.0 мови C# (та пізніші версії), можна ініціалізувати відкриті властивості та відкриті поля у спеціальному блоці під час створення об'єкта. Вирази ініціалізації перелічуються через кому.

Припустимо, описано такий клас:

public class Point

{

public int X { get; set; }

public int Y { get; set; }

}

Можна запропонувати два варіанти:

Point p = new Point { X = 10, Y = 20 };

Point p1 = new Point() { X = 100, Y = 200 };

У наведених прикладах спочатку викликається конструктор без параметрів, після завершення роботи якого здійснюється запис указаних значень у властивості. Можна також викликати конструктор з параметрами.

public class Point

{

public int X { get; set; }

public int Y { get; set; }

public Point() { }

public Point(int x, int y)

{

X = x;

Y = y;

}

}

...

Point p = new Point(1, 2) { X = 10, Y = 20 };

Оскільки блок ініціалізації виконується після виконання тіла конструктора, значення, визначені у блоці, затирають значення, присвоєні у конструкторі. Більше сенсу має інший приклад, у якому ініціалізується властивість Color відповідного типу, визначеного в просторі імен System.Drawing. Координати точки можна визначити через конструктор, а для завдання кольору немає відповідного конструктора, тому доцільно скористатись ініціалізатором.

public class Point

{

public int X { get; set; }

public int Y { get; set; }

public System.Drawing.Color Color { get; set; }

public Point() { }

public Point(int x, int y)

{

X = x;

Y = y;

}

}

...

Point p = new Point(1, 2) { Color = System.Drawing.Color.Blue };

Іноді виникає потреба у вкладених ініціалізаторах. Припустимо, клас Rectangle (прямокутник) містить опис властивостей типу Point:

public class Rectangle

{

public Point LeftTop { get; set; }

public Point RightBottom { get; set; }

}

Тоді можна викликати конструктори всередині блоку ініціалізації:

Rectangle rect = new Rectangle

{

LeftTop = new Point(0, 0),

RightBottom = new Point(30, 40)

};

Можна також запропонувати наступну вкладену ініціалізацію:

Rectangle rect = new Rectangle

{

LeftTop = new Point { X = 0, Y = 0 },

RightBottom = new Point { X = 30, Y = 40 }

};

2.1 Статичні класи

Починаючи з версії 2.0, мова C# підтримує так звані статичні класи. Такі класи можуть містити тільки статичні елементи.

public static class Static

{

private static int k = 144;

public static int GetK()

{

return k;

}

}

Статичні класи не можна використовувати для створення об'єктів, вони не можуть бути застосовані як базові. Статичний клас може мати статичний конструктор.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]