5
Abstrakt sinflar
Ildiz sinf ko’pincha konkret ob’ektlar yasash uchun emas, balki boshqa
sinf ostilar yasash asosi sifatida yasaladi.Ba’zi metodlar ildiz sinfda hali aniq
algoritmga ega bo’lmaydi agar sinf ostilar ularni har xil aniqlashi ko’zda
tutilgan bo’lsa.Bunday hollarda bo’sh metod yasaladi (zaglushka o’rniga) va
u abstract deb e’lon qilinadi. Bunday sinf ob’ektini
yasash munkin emas, u
faqat sinf osti yasash uchun yasalgan.abstract metodlar “abstract”
modifikatori bilan e’lon qilinadi va ularning tanasi mavjud bo’lmaydi.
Abstract metodga ega sinf ham “abstract” modifikatoriga ega bo’lishi
kerak.Abstract sinf abstract bo’lmagan metodlarga ham ega bolishi
mumkinSinflar ierarxiyasidan yuqoriga ko’tarilib borgan sari sinf
abstraktliligi
oshib boradi
Himoyalangan ruxsat
1.
Modifikator protected (maydon va metod uchun)
2.
Sinf ostilar va shu sinf ostilar turgan paketlardagi sinflar uchun ruxsat
beriladi
3.
Asosan
metodlar uchun, maydonlarga ham qo’yish mumkin, lekin
tavsiya etilmaydi.
4.
Protected modifikatori C++ dagi protected modifikatoridan farq qiladi.
C++ da faqat sinf ostilargagina ruxsat beriladi
Ruxsat turlari
Private – ko’rinish
sohasi faqat shu sinf
Public - ko’rinish sohasi chegaralanmagan
Protected - ko’rinish sohasi paket va sinf ostilar
Ko’rsatilmagan - ko’rinish
sohasi joriy paket
Object – global supersinf
6
С# da Object si
nfi mavjud. U hama sinflar uchun supersinf hisoblanadi, ya’ni
har bir sinf Object sinfini kengaytiradi. Lekin class Ishchi : Object
deb yozish
kerak emas.Agar sinf uchun suersinf ko’rsatilmagan b’lsa Object sinfi uning
supersinfi hisoblanadi.Object sinfi o’zgarubchisini ixtiyoriy ob’ektga
ko’rsatkich sifatida ishlatish mumkin:
Object o = new Talaba("Sultonov M.U.", “2-I","Informatika");
Keyinchalik esa keltirish mumkin: Talaba t = (Talaba)o;
Object tipidagi ko’rsatkich asosan har xil tipli elementlarga ega bo’lgan
berilganlar shajrasini tuzish uchun ishlatiladi.
Equals metodi
equals: agar ikki ko’rsatkich ayni bir xotirani egallab turgan bo’lsa true natija
qaytaradi.
A.equals(B);
Bu yerda A va B ko’rsatkich tipga tegi
C# spetsifikatsiyasidagi equals:
1. R
efleksivlik. Ixtiyoriy null bo’lmagan х ko’rsatkich uchun x. equals(x)
chaqiruv true natija beradi
2. Simmetriklik.Ixtiyoriy х va у ko’rsatkichlar uchun х.equals(у) chaqiruv
true natija beradi faqat va faqat shu holdaki qachon у.equals(x) chaqiruv true
natija bersa.
3. Tranzitivlik. Ixtiyoriy х va у ko’rsatkichlar uchun х.equals(у) va
у.equals(z) chaqiruv true natija bersa х.equals(z) chaqiruv ham true natija
beradi.
4. Qaramaqarshiliksizlik. Agar x va y ro’rsatkichlar ko’rsatadigar ob’ektlar
o’garmasa qayt
a х.equals(у) chaqiruv natijasi oldingi chaqiruv natijasi bilan
bir xil bo’ladi.
5. Ixtiyoriy null bo’lmagan ko’rsatkich х uchun х.equals(null) chaqiruv false
natija beradi.