C# Kortejlar C# kartejlarni e’lon qilish


C# tilida supersinf (ota sinf)


Download 260.19 Kb.
bet17/28
Sana18.06.2023
Hajmi260.19 Kb.
#1574109
1   ...   13   14   15   16   17   18   19   20   ...   28
Bog'liq
dasturlash tyorya 8 shrift

42.1. C# tilida supersinf (ota sinf)
Meros - OOPning asosiy nuqtalaridan biri. Meros bir sinfga boshqa sinfning funksionalligini meros qilib olish imkonini beradi.Ammo kutilmaganda bizga korxona xodimini tavsiflovchi sinf kerak bo'ldi - Xodimlar sinfi. Bu sinf Person klassi bilan bir xil funksiyalarni amalga oshirishi sababli, xodim ham shaxs bo'lganligi sababli, Xodimlar sinfini o'z navbatida Person sinfidan olingan (yoki meros qilib olingan yoki pastki klassli) qilish oqilona bo'lar edi. asosiy sinf sinfi yoki ota-onasi (yoki yuqori sinf):Ikki nuqtadan keyin bu sinf uchun asosiy sinfni belgilaymiz. Employee klassi uchun asosiy sinf Person hisoblanadi va shuning uchun Employee klassi Person sinfidagi barcha xususiyatlar, usullar, maydonlarni meros qilib oladi. Meros orqali o'tmaydigan yagona narsa bu parametrlarga ega asosiy sinf konstruktorlari.Demak, meros is-a (is) munosabatini amalga oshiradi, Employee sinfining ob'ekti ham Person sinfining ob'ekti hisoblanadi:Va Employee ob'ekti ham Person ob'ekti bo'lganligi sababli, biz o'zgaruvchini quyidagicha belgilashimiz mumkin: Person p = new Employee().Odatiy bo'lib, biz merosni aniq belgilamagan bo'lsak ham , barcha sinflar Object asosiy sinfidan meros bo'lib qoladi. Shuning uchun, yuqorida tavsiflangan Person va Employee sinflari o'z usullaridan tashqari, Object sinfining usullariga ham ega bo'ladi: ToString(), Equals(), GetHashCode() va GetType().Barcha standart sinflar meros qilib olinishi mumkin. Biroq, bu erda bir qator cheklovlar mavjud
42. 2.Bir nechta meros qo'llab-quvvatlanmaydi, sinf faqat bitta sinfdan meros bo'lishi mumkin.Olingan sinfni yaratishda asosiy sinfga kirish turini hisobga olish kerak - olingan sinfga kirish turi asosiy sinf bilan bir xil yoki undan qattiqroq bo'lishi kerak. Ya'ni, agar bizning asosiy sinfimiz ichki kirish turiga ega bo'lsa , u holda olingan sinf ichki yoki xususiy kirish turiga ega bo'lishi mumkin , lekin umumiy emas Shu bilan birga, shuni ham hisobga olish kerakki, agar asosiy va hosila sinf turli assambleyalarda (loyihalarda) bo'lsa, unda bu holda hosila sinf faqat umumiy modifikatorga ega bo'lgan sinfdan meros bo'lishi mumkin.Agar sinf muhrlangan modifikator bilan e'lon qilingan bo'lsa , u holda sinfni meros qilib olish yoki undan olish mumkin emas. Masalan, quyidagi sinf merosxo'rlarni yaratishga ruxsat bermaydi:Statik sinfdan sinfni meros qilib olmaysiz.Olingan sinfdan asosiy sinf a'zolariga kirish Keling, Shaxs va Xodimlar sinfimizga qaytaylik. Xodim barcha funksiyalarni Person sinfidan meros qilib olsa ham, keling, quyidagi holatda nima sodir bo'lishini ko'rib chiqamiz: Ushbu kod ishlamaydi va xatoga yo'l qo'yadi, chunki o'zgaruvchi _namemodifikator bilan e'lon qilingan privateva shuning uchun unga faqat sinf kirish huquqiga ega Person. Boshqa tomondan, Person klassi biz foydalanishimiz mumkin bo'lgan umumiy nom xususiyatini belgilaydi, shuning uchun quyidagi kod biz uchun yaxshi ishlaydi:Shunday qilib, olingan sinf faqat private rotected modifikatorlari bilan belgilangan asosiy sinf a'zolariga kirishi mumkin (agar asosiy va hosila sinf bir xil yig'ilishda bo'lsa), public , ichki (agar asosiy va hosila sinf bir xil bo'lsa). yig'ish), himoyalangan va himoyalangan ichki .asosiy kalit so'z Endi sinflarimizga konstruktorlarni qo'shamiz:Person sinfida Name xususiyatini o'rnatuvchi konstruktor mavjud. Employee klassi bir xil Name xususiyatini meros qilib olganligi va o'rnatganligi sababli, sozlash kodini yuz marta yozmaslik mantiqan to'g'ri bo'ladi, lekin qandaydir tarzda Person sinfining tegishli kodini chaqirish kerak. Bundan tashqari, asosiy sinf konstruktori va parametrlarida o'rnatilishi kerak bo'lgan yana ko'p xususiyatlar bo'lishi mumkin.



Download 260.19 Kb.

Do'stlaringiz bilan baham:
1   ...   13   14   15   16   17   18   19   20   ...   28




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling