Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Деструктори.

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

У мові C # y класу може бути деструктор, але він не займається видаленням об'єктів і не викликається нормальним чином в ході виконання програми. Деструктор класу, якщо він є, викликається автоматично в процесі збірки сміття. Його роль - у звільненні інших ресурсів, наприклад, файлів, відкритих об'єктом. Деструктор C # фактично є фіналізатором (finalizer).Формальний опис деструктора класу Person:

~ Person ()

{

/ / Код деструктора

}

Ім'я деструктора будується з імені класу з передуючим йому символом ~ (тильда). Як і у статичного конструктора, у деструктора не вказується модифікатор доступу.

 

Відносини між класами:

1. Композиція. Класи A і В знаходяться у відношенні "клієнт - постачальник", якщо одним із полів класу В є об'єкт класу А. Клас А називається постачальником класу В, клас В називається клієнтом класу А. Для забезпечення доступу до методів класу постачальника, вони повинні бути забезпечені модифікатором public

2. Спадкування. Класи А і В знаходяться у відношенні "батько - спадкоємець", якщо при оголошенні класу В клас А вказаний як батьківський клас. Клас А називається батьком класу В, клас В називається нащадком класу А. Для забезпечення доступу до методів класу батька, вони повинні бути забезпечені модифікатором pubic або protected.

Створимо тепер клас Derived - нащадка класу Found. У простому випадку оголошення класу може виглядати так:

public class Derived: Found

{

}

Тіло класу Derived порожнє, але це зовсім не означає, що об'єкти цього класу не мають полів і методів: вони успадковують всі поля і методи (Крім конструктора) класу Found і тому можуть робити все, що можуть робити об'єкти батьківського класу. Можна навіть не створювати власних конструкторів класу. У цьому випадку автоматично додається конструктор за замовчуванням - конструктор без аргументів, який буде викликати конструктор без аргументів батьківського класу. Зауважте, такий конструктор у батька повинен бути, інакше виникне помилка.

Що може робити нащадок з полями? Насамперед, він може додати нові властивості - поля класу. Він може приховати поле батька, додавши власне поле з тим же ім'ям, що і поле батька, можливо, змінивши тип цього поля і його модифікатори. Приховування батьківського поля не означає, що нащадок видаляє поле, успадковував від батька. Це поле у нащадка залишається і доступно для виклику, але приховано, і щоб дістатися до нього, необхідно ім'я поля уточнити ім'ям батька, що задається ключовим словом base. Приховувані поля слід створювати з використанням модифікатору new. Якщо цього не зробити, то батьківське поле все одно буде приховано, і на етапі компіляції буде видано попередження про виниклу ситуацію.


Дата добавления: 2015-08-18; просмотров: 94 | Нарушение авторских прав


Читайте в этой же книге: Проблема готовности к обучению в школе. | Диагностика школьной зрелости. | Опишіть послідовність етапів і процедур дослідження цін. | Опишіть послідовність етапів і процедур дослідження ринку упаковки. | На основі даних про результати маркетингових досліджень охарактеризуйте вибірку: визначте одиницю вибірки, обсяг вибірки і структуру вибірки. | Лабораторна робота 1. Повторення принципів ООП. Зв’язки між класами. | Створення батьківського класу Found | Добавление и скрытие полей потомком | Класи. Ролі класу | Механізми зміни доступу до полів. Методи-властивості |
<== предыдущая страница | следующая страница ==>
Доступ до методів| Статичний контроль типів і динамічне зв'язування

mybiblioteka.su - 2015-2024 год. (0.006 сек.)