Virtual metodlar.To‗la ma‘noda obyektlar polimorfizmi virtual metodlar yordamida
amalga oshiriladi. Obyekt turini aniqlashda metod sarlavhasidan keyin Virtual so‗zini qo‗yish
bilan aniqlanadi.
Procedure (
); Virtual;
Function (
):; Virtual;
Virtual metodlar aniqlanishida quyidagi shartlar bajarilishi kerak.
Ajdod obyekt turida birorta metod virtual qilib aniqlangan bo‗lsa, shu turdan hosil
bo‗luvchi barcha obyektlarda ham shu nomdagi metodlar virtual bo‗lishi kerak, ya‘ni virtual
metod keyinchalik statik deb e‘lon qilinishi mumkin emas.
Agar virtual metod avlod obyektlarda qayta aniqlanadigan bo‗lsa, bu metod nomi va
formal parametrlar, ularning joylashuvi o‗zgarmasligi kerak. Agar virtual metod funksiya bo‗lsa,
uning qiymatini turi o‗zgarmasligi kerak.
Obyekt turida obyektni initsializatsiya qiluvchi metod bo‗lishi kerak. Bu metod boshqa
metodlardan e‘lonida Procedure so‗zi o‗rnida Constructor so‗zini ishlatilishi bilan farq qiladi.
Bu kalit so‗z virtual metodlar uchun boshlang‗ich aniqlash ishlarini amalga oshiradi.
Tarkibida virtual metodga ega obyekt albatta konstruktor bo‗lishi kerak. Konstruktor virtual
metodlardan oldin chaqirilishi shart, aks holda noaniq holat yuzaga keladi.
O‗z ichida virtual metodi bor obyekt turidagi har bir o‗zgaruvchi alohida o‗z konstruktori
bilan initsializatsiya qilinishi kerak. Har bir obyekt turi o‗zining ―virtual metodlar jadvali‖ga
(VMT) ega bo‗ladi. Bu jadvalda obyekt turi, har bir virtual protsedura va funksiyalar
kodlarining adreslari saqlanadi. Birorta obyekt turidagi o‗zgaruvchi tomonidan virtual metod
chaqirilganda bu metod adresi VMT jadvalidan aniqlanadi.
Konstruktorning vazifasi obyekt turidagi har bir o‗zgaruvchi bilan VMT jadvalini bog‗lashdir.
Har bir obyekt uchun VMT yagona bo‗ladi. Obyektda bir nechta konstruktor e‘lon qilingan
bo‗lishi mumkin. Konstruktor statik bo‗lishi kerak, uning ichidagi chaqiriluvchi metodlar virtual
bo‗lishi mumkin.
Protsedura va funksiyalar polimorf obyektni uzatganda (virtual metodi bor), u holda
undagi virtual metodlar adreslari mos obyektlar orqali VMT jadvaliga uzatiladi. Bu hol obyekt
turini e‘lon qilingandagi metodni bajarilishini kafolatlaydi. Aniqroq qilib aytadigan bo‗lsak, agar
Z obyekt Y obyektdan virtual metodlarni vorislik orqali olsa va bu metoddagi boshqa metodlarga
murojaat bo‗ladigan bo‗lsa, oxirgi metodlar Z obyektidan olinadi (statik metodlarda Y olinar
edi).