Virtual va mavhum oʻrtasidagi farq

Virtual va mavhum oʻrtasidagi farq
Virtual va mavhum oʻrtasidagi farq

Video: Virtual va mavhum oʻrtasidagi farq

Video: Virtual va mavhum oʻrtasidagi farq
Video: BOR EKANİGA İSHONİSH QİYİN BO'LGAN 8 TA YO'LLAR / DUNYODAGİ ENG CHİROYLİ YO'LLAR / Buni Bilasizmi? 2024, Iyul
Anonim

Virtual va Abstrakt

Virtual va Abstract bu Java va C kabi ob'yektga yo'n altirilgan (OO) dasturlash tillarida qo'llaniladigan ikkita kalit so'zdir. Turli tillarda uning maʼnosi boʻyicha ozgina farqlar mavjud boʻlsa-da, virtual va mavhum kalit soʻzlar u biriktirilgan obʼyektlarga qisman amalga oshirish hissini beradi.

Referat

Odatda, Abstract Base Classes (ABC) deb ham nomlanuvchi mavhum sinflarni namuna qilib boʻlmaydi (bu sinfning namunasini yaratib boʻlmaydi). Shunday qilib, mavhum sinflar faqat dasturlash tili merosni qo'llab-quvvatlasa (sinfni kengaytirishdan kichik sinflarni yaratish qobiliyati) mazmunli bo'ladi. Mavhum sinflar odatda qisman yoki umuman amalga oshirilmagan mavhum tushuncha yoki ob'ektni ifodalaydi. Shu sababli, Abstrakt sinflar bolalar sinflari olinadigan ota-sinflar rolini o'ynaydi, shuning uchun bolalar sinfi ota-sinfning to'liq bo'lmagan xususiyatlarini baham ko'radi va ularni bajarish uchun funksionallik qo'shilishi mumkin. Abstrakt sinflar mavhum usullarni o'z ichiga olishi mumkin. Mavhum sinfni kengaytiruvchi kichik sinflar ushbu (meroslangan) Abstrakt usullarni amalga oshirishi mumkin. Agar bolalar sinfi barcha mavhum usullarni amalga oshirsa, bu aniq sinfdir. Agar shunday bo'lmasa, bolalar sinfi ham Abstrakt sinfga aylanadi. Bularning barchasi shuni anglatadiki, dasturchi sinfni Abstrakt sifatida tayinlaganida, u sinf to'liq bo'lmasligini va unda meros qilib olingan kichik sinflar tomonidan to'ldirilishi kerak bo'lgan elementlar bo'lishini aytadi. Bu ikkita dasturchi o'rtasida shartnoma tuzishning yaxshi usuli bo'lib, u dasturiy ta'minotni ishlab chiqishdagi vazifalarni soddalashtiradi. Meros olish uchun kod yozadigan dasturchi usul ta'riflariga to'liq amal qilishi kerak (lekin, albatta, o'z amaliyotiga ega bo'lishi mumkin). Java va C tillarida Abstract sinflari va usullari Abstract kalit so'zi yordamida e'lon qilinadi.

Virtual

Virtual usullar/funksiyalar ixtiyoriy ravishda meros qilib oluvchi sinf tomonidan uning xatti-harakatlarini bekor qilish imkoniyatini beradi (bir xil imzoga ega funktsiyadan foydalangan holda). Virtual funksiya tushunchasi quyidagi stsenariyda muhim ahamiyatga ega. Faraz qilaylik, sinf bola sinf tomonidan olingan bo'lsa, har doim hosila sinf ob'ekti ishlatilsa, u asosiy sinf yoki hosila sinf ob'ektiga murojaat qilishi mumkin. Ammo, agar asosiy sinf usullari bekor qilingan bo'lsa, usulni chaqirish harakati noaniq bo'lishi mumkin. Shunday qilib, ushbu noaniqlikni bartaraf etish uchun Virtual kalit so'z ishlatiladi. Agar usul Virtual deb belgilangan bo'lsa, hosil bo'lgan sinfning funktsiyasi (agar mavjud bo'lsa) yoki asosiy sinfning funktsiyasi chaqiriladi. Masalan, C++ tilida Virtual kalit so'z aynan shu maqsadda qo'llaniladi. C da Virtual kalit so'z xuddi shunday tarzda qo'llaniladi, lekin bundan tashqari, barcha bekor qilingan usullarni o'zgartirish uchun override kalit so'zidan foydalanish kerak. Ammo Java-da aniq Virtual kalit so'z yo'q. Barcha statik bo'lmagan usullar Virtual hisoblanadi. Tanasi boʻlmagan virtual funksiyalar sof virtual funksiyalar deb ataladi. Java va C tillarida abstrakt usullar aslida Pure Virtual hisoblanadi.

Virtual va mavhum oʻrtasidagi farq

Mavhum va Virtual ikkita kalit so'z/tushuncha bo'lib, u bilan bog'liq ob'ektlarga to'liq amalga oshirilmagan ma'noni beradi, lekin ularning farqlari bor. Mavhum usullar (abstrakt sinflar ichida aniqlanishi kerak) umuman amalga oshirishga ega emas, Virtual usullar esa amalga oshirishga ega bo'lishi mumkin. Agar mavhum usullar aniq sinf tomonidan kengaytirilsa, barcha meros qilib olingan Abstrakt usullar amalga oshirilishi kerak, meros qilib olingan Virtual usullar esa bekor qilinishi yoki bekor qilinishi mumkin.

Tavsiya: