y"> Наприклад: = classCreate; virtual;; = class (TVehicle) Create; override;; = class (TVehicle) Create; override;; = class (TMotorcycle)// обриваємо ланцюжок перевизначення - заводимо новий Create
constructor Create (x: integer); reintroduce;
end;
У мові вводиться так званий класовий тип. Цей тип в якості значення може приймати назву будь-якого класу, похідного від TVehicle. p align="justify"> type = class of TVehicle;
Такий механізм дозволяє створювати об'єкти будь-якого заздалегідь невідомого класу, похідного від TVehicle.
var: CVehicle;: TVehicle;: = TAutomobile;: = cv.Create;
Зауважте, що код
cv: = TMoped;
v: = cv.Create;
є некоректним - директива reintroduce розірвала ланцюжок перевизначення віртуального методу, тому буде викликаний конструктор TMotorcycle.Create (а значить, буде створений мотоцикл, а не мопед!)
Ім'я конструктора має збігатися з ім'ям класу. Допускається використовувати кілька конструкторів з однаковим ім'ям, але різними параметрамі.ClassWithConstructor {:
/* Ініціалізація внутрішнього об'єкта за допомогою конструктора */
ClassWithConstructor (float parameter): object (parameter) {}/* виклик конструктора AnotherClass (float); * /:
AnotherClass object;
};
ВИЗНАЧЕННЯ
клас конструктор шаблон доступ
Наведемо приклад визначення класу:
class TCounter {count;// дані класи: GetValue ();// функції-члени класу
void SetValue (long);
};
Визначення класу починається з ключового слова class за яким слідує ім'я класу. Ім'я класу може мати до 32 символів, причому розрізняються малі та великі літери. Відкриває і закриває фігурні дужки визначають тіло класу, до якого включено опис даних і функцій класу. Закінчується опис класу символом В«;В». Клас має стільки змінних (даних), скільки необхідно. Змінні можуть бути будь-якого типу, включаючи інші класи, вказівники на класи і покажчики на динамічно розподіляються об'єкти. Змінні оголошені усередині класу мають область видимості класу, тобто від точки оголошення змінної до кінця класу.
Визначення функцій - членів класу.
У наведеному вище описі класу функції класу тільки оголошені, наведемо їх реалізацію. Зазвичай опису класів включають в заголовкові файли (*. H), а реалізацію функцій-членів класів - у файли *. CPP. p align="justify">// встановити значення счетчікаTCounter :: SetValue (long val) {
count = val;
}
// отримати...