Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab_16-18.docx
Скачиваний:
5
Добавлен:
06.11.2018
Размер:
39.61 Кб
Скачать

6.4. Створення та видалення класів та екземплярів класів

При створенні та видаленні екземпляра класу, а також при створенні класу викликаються спеціальні методи, звані конструктором екземпляра (або просто конструктором), конструктором класу і методом завершення, також званим деструктором.

Середовище виконання гарантує, що конструктори класу будуть викликані при будь-якому зверненні до цього класу, а конструктор екземпляра – виконаний при будь-якому звернення до цього екземпляра класу. Метод завершення буде викликаний при видаленні об'єкта. При цьому слід мати на увазі, що об'єкт віддаляється не відразу, як тільки він стане недоступним, а через деякий (взагалі кажучи, невідоме) час. Використання методів завершення небажано, оскільки їх наявність трохи сповільнює видалення екземп ¬ ляров класу (це пов'язано з особливостями роботи алгоритму "збору сміття ¬ ра"). Конструктор кожного класу зобов'язаний викликати конструктор базового класу. Якщо цього не зробити явно, компілятор Visual Basic. NET сам вмонтує виклик конструктора базового класу за замовчуванням.

Для створення конструктора потрібно створити процедуру New. Ця процедура викликається автоматично

Sub New(argument)

[operatory]

End Sub

Кожний раз при створенні екземпляра класу буде виконуватися процедура Sub New( ).

Koли клас більше не потрібен, запускають програму-деструктор. Робота деструкторів основана на процесі, який називають "збірка сміття". За допомогою цього процесу VВ.NET визначає, коли системний ресурс вже не потрібен і вивантажує йоro з пам’яті.

6.5. Перевизначення методів базових класів

Успадкування класів виконується за допомогою ключового слова:

Inherits Class_Name

записаного відразу після оголошення класу.

При успадкуванні часто виникає необхідність у перевизначенні методів базового класу, наприклад, для зміни поведінки класу або ж просто потрібно додати метод з такою ж назвою, як у базового класу. Таким чином, при додаванні методу повинна існувати можливість вказати, використовувати його замість методу базового класу або ж створити окремий метод, ніяк не пов'язаний з методом базового класу. Така можливість є. При оголошенні методу Visual Basic. NET дозволяє вказувати, перекриває він метод базового класу чи ні. Для цього використовуються такі ключові слова:

Overridabie - метод можна перевизначати в успадкованих класах. Без цього ключового слова методи, оголошені в успадкованих класах, будуть приховувати метод базового;

Overrides – метод перевизначає метод базового класу;

Notoverridabie – метод не можна перевизначати в успадкованих класах. Мається на увазі за замовчуванням, якщо не вказано overridabie;

shadows - метод приховує метод базового класу. Мається на увазі за замовчуванням, якщо не вказано overrides.

6.6. Інтерфейси

Середа Visual Basic. NET не підтримує множинне наслідування класів. Це означає, що кожен клас має рівно один базовий клас (за винятком класу system.object), але не більше. Тим не менш, середовище дозволяє розробникам вказувати набір методів, які клас зобов'язаний реалізовувати. Така можливість дається за допомогою інтерфейсів.

Інтерфейси визначають властивості, методи і події, які класи можуть реалізовувати. Інтерфейси дозволяють визначити зовнішні подання у вигляді невеликих груп тісно пов'язаних властивостей, методів і подій; при цьому зменшується кількість проблем сумісності, оскільки можна створювати вдосконалені реалізації інтерфейсів без втручання в існуючий код. Нові зовнішні подання додаються в будь-який момент часу за допомогою розробки додаткових інтерфейсів і реалізацій.

Визначення інтерфейсів знаходяться між операторами Interface і End Interface.

Interface InterfaceName

Inherits InterfaceName1

Sub subName(ByVal par As String)

Property PropName() As Integer

Event EventName(ByVal Eventargumet)

End Interface

При описі класу необхідно після оголошення написати оператор Implements interfacename.

При описі методів, властивостей та подій необхідно вказувати який метод інтерфейсу вони реалізують. Наприклад:

Public Sub SubName1(argument) Implements interfaceName.subName

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