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

24. Успадкування. Його призначення, види та правила використання.

Успадкування – це можливість створювати нові класи на основі вже існуючих або власних класів. При цьому новий клас (нащадок) буде мати всі поля, методи і властивості існуючого класу (предка). Клас, у якому є метод із специфікатором class є абстрактним і від нього не можна створити об’єкт. Проте від цього класу можна створити нащадка і зробити його реалізацію.

Успадкування дозволяє:

  • до класу-предка додавати нові поля, методи і властивості;

  • перекривати поля, методи і властивості предка;

  • перевизначати в нащадку методи з цими самими іменами і параметрами, але з іншою реалізацією тіла методу;

  • перевантажувати метод, залишаючи ім’я, але змінюючи список параметрів.

Для організації всіх названих операцій у Delphiвикористовують ключові слова virtual, override, overload, dynamic, reintroduce.

25.Метод класу, їхнє призначення та правила використання.

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

TmyForm=Class(TForm)

Class Procedure MessageCreate;

End;

Class Procedure TmyForm.MessageCreate;

Begin

End;

Прикладом подібного методу є конструктор. Класи у яких є подібні методи називають абстрактними бо від них не можна створити обєкту.

26.Віртуальні та динамічні методи, їхнє призначення та використання

Статичні методи зручні, коли в програмі заздалегідь відомо, які типи об'єктів будуть використовуватися, і приведення типів, як правило, не потрібно. У ряді випадків, особливо у великих проектах, часто доводиться зберігати в змінні об'єкти-нащадки (як у прикладі з TCar і TMAZ), причому конкретний тип цих об'єктів може бути невідомий. Тому в Object Pascal реалізований новий тип методів - віртуальні методи (для їхнього опису існує зарезервоване слово virtual). Описати віртуальний метод можна так.

type TCar = class(TObject) procedure Move; virtual; end;

Такі методи в класах-нащадках можуть бути перекриті методами з однойменними заголовками. Щоб явно вказати компілятору, що визначений метод перекриває віртуальний метод батька, треба використовувати ключове слово override.

type TMAZ = class(TCar) procedure Move; override; end;

Тепер у наведеному прикладі можна не виконувати приведення типів. Під час роботи програми вона самостійно визначить тип збереженого в змінній Car об'єкта і викличе потрібний метод.

Car := TMAZ.Create; Car.Move;

Викличеться метод Move класу TMAZ. Якщо ж цей метод не перекрити (не вказати ключове слово override), то викличеться метод Move класу TCar.

Замість ключового слова virtual можна застосовувати ключове слово dynamic, що виконує ті ж функції й описує метод як динамічний.

type TCar = class(TObject) procedure Move; dynamic; end;

Різниця між віртуальними і динамічними методами полягає тільки в деталях програмної реалізації. Віртуальні методи оптимізовані для максимальної швидкодії, динамічні - для максимальної економії пам'яті (створення компактного коду).

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