Java bir kund



Download 1,09 Mb.
bet18/24
Sana30.09.2022
Hajmi1,09 Mb.
#850991
1   ...   14   15   16   17   18   19   20   21   ...   24
Bog'liq
Java быстрый старт (1)

Mavhum sinf - bu boshqa hosila sinflarni yaratish uchun faqat tayanch sinf sifatida yaratilgan maxsus sinf. Abstrakt sinflarning namunalarini yaratib bo'lmaydi. Boshqacha qilib aytganda, agar FourWheelVhicles mavhum sinf bo'lsa,
keyin buyruqni bajarishga harakat qilganingizda

FourWheelVehicle myVeh = new FourWheelVehicle();


mavhum sinf ob'ektini yaratish mumkin emasligi sababli siz xatoga yo'l qo'yasiz .
8.3. Referat sinflar va metodlar 157

Boshqa har qanday sinf singari, mavhum sinflar ham maydonlar va usullarni o'z ichiga olishi mumkin. Bundan tashqari, ular maxsus turdagi usullarni - mavhum usullarni o'z ichiga olishi mumkin. Mavhum usullarning tanasi yo'q va ular olingan sinfda amalga oshirilishi kerak. Abstrakt usullar faqat mavhum sinflarda mavjud bo'lishi mumkin.

Yuqoridagi fitnes klubi misolida ota-onalar sinfi (A'zo) yillik to'lov maydonini 0 ga o'rnatadigan AnnualFee() hisoblash usulini e'lon qildi .


Bunday ma'nosiz usulni amalga oshirishni ota-sinfga kiritish o'rniga , usulni abstrakt deb e'lon qilish yaxshiroqdir .

Keling, buni qanday qilishni fitness klubi misolida ko'rib chiqaylik. Dastur bir qator o'zgarishlarni amalga oshirishi kerak.




Ota-onalar sinfidagi o'zgarishlar
Avval siz chiziqlarni almashtirishingiz kerak
umumiy bekor hisoblangan yillik to'lov()
{

yillik to'lov = 0;


}

a'zolar sinfida quyidagi qatorga ega:


mavhum ommaviy bekor hisoblashAnnualFee();

Usul deklaratsiyasidagi mavhum kalit so'z usulning mavhum ekanligini ko'rsatadi. Bundan tashqari, {} jingalak qavslar usul deklaratsiyasidan keyin qo'shilmaydi, shuning uchun


158 8 -bob. Obyektga yo‘naltirilgan dasturlash

mavhum usullar qanday tanaga ega emas. Buning o'rniga, deklaratsiya nuqtali vergul (;) bilan tugaydi .
Keyin a'zolar sinfi mavhum deb e'lon qilinishi kerak . Gap shundaki, mavhum usullar faqat mavhum sinflarda mavjud bo'lishi mumkin. Buning uchun siz Ro'yxatdan sinfining deklaratsiyasiga kalit so'zni qo'shishingiz kerak .
so'z abstrakt:

mavhum ommaviy sinf a'zosi


Bu sinfda amalga oshirilishi kerak bo'lgan barcha o'zgarishlar


a'zosi.
InheritanceDemichidao sinfidagi o'zgarishlar

Shuningdek, Inheri sinfiga bitta o'zgartirish kiritishingiz kerak bo'ladi


tanceDemo.

Chunki mavhum sinfning namunasini yaratish mumkin emas


chiziqni bajarishga harakat qilganda, mumkin

clubMembers[5] = yangi a'zo("Yvonne", 6, 2013);


InheritanceDemo.java faylida xatolik yuz berdi.


Iteratsiyani tuzatish uchun siz ob'ektni ushlab turish uchun clubMember massivining oxirgi elementini o'zgartirishingiz mumkin Oddiy a'zo yoki VIPMember . Ushbu yechim ushbu
dastur mantig'ida yaxshi ishlaydi, chunki klubga tashrif
buyuruvchi faqat a'zo emas, balki ikkita toifadan biriga (NormalMember yoki VIPMember) tegishli bo'lishi kerak .
Bizning misolimizda element VIP ob'ektga aylantirilgan.
a'zosi.



    1. Referat sinflar va metodlar 159


Chiziqni shunday qiling:

clubMembers[5] = new VIPmember("Yvonne", 6, 2013);


Aslida, bu Inheri -da bajarilishi kerak bo'lgan hamma narsa


tanceDemo.
Olingan sinflardagi o'zgarishlar
Nihoyat, olingan sinflarga o'tamiz. Abstrakt usullar olingan sinflarda amalga oshirilishi kerak, shuning uchun siz accountAnnualFee() usuli ikkala hosila sinfda ham amalga oshirilishiga ishonch hosil qilishingiz kerak .
Oldingi misolda bu usul ularning ikkala sinfida ham qo'llanilgan. Shuning uchun, hech qanday o'zgarish yo'q
suv sinflari qilish shart emas.

Dasturni saqlang va ishga tushiring. Hamma narsa ishlashi kerak


odatdagidek, avvalgidek; uchun faqat chiqish
oxirgi mehmon (Yvonne). Yillik to'lov quyida ko'rsatilganidek, $1200 bo'lishi kerak.
A'zo nomi: Yvonne A'zo identifikatori: 6 2013 yildan beri a'zo Yillik to'lov: 1200,0

Xulosa qilib aytadigan bo'lsak, mavhum sinf asosiy sinfning maxsus turi bo'lib, uni namuna qilib bo'lmaydi . U amalga oshirish tafsilotlari bo'lmagan mavhum usullarni o'z ichiga olishi mumkin va olingan sinflarda amalga oshirilishi kerak.


160 8 -bob. Obyektga yo‘naltirilgan dasturlash




    1. INTERFEYSLAR

Keling, interfeyslarga o'tamiz. Interfeyslar mavhum sinflarga o'xshaydi: ularni ham instantsiya qilib bo'lmaydi. Buning o'rniga ular kerak
sinflar tomonidan amalga oshirilishi yoki boshqa interfeyslar tomonidan kengaytirilishi mumkin. Sinf interfeysni amalga oshirganda, u ushbu interfeysdagi barcha mavhum usullarni amalga oshirishi kerak .
Java 7 dan oldin interfeyslarda faqat mavhum usullar (ya'ni, tanasi bo'lmagan usullar) va doimiylar (ya'ni, yakuniy kalit so'zli maydonlar) bo'lishi mumkin edi.
Interfeysdagi barcha usullar bevosita ochiq deb e'lon qilinadi
mi, shu bilan birga barcha doimiy qiymatlar yashirindir
ommaviy, statik va yakuniy deklaratsiyalar . Ushbu modifikatorlarni aniq belgilashingiz shart emas.
Mavhum sinf va interfeys o'rtasidagi asosiy farqlardan biri shundaki, sinf bitta mavhum sinfni kengaytirishi mumkin, lekin u ko'plab interfeyslarni amalga oshirishi mumkin. Biroq, kitob bir nechta interfeyslarni amalga oshirish misollarini qamrab olmaydi , chunki bu juda murakkab mavzu bo'lib, undan tashqarida.
kitobdan tashqarida.

Mavhum sinf va interfeys o'rtasida yana bir farq bor : interfeys faqat mavhum usullarni o'z ichiga olishi mumkin (Java 7 dan oldin), mavhum sinflar esa mavhum bo'lmagan usullarni o'z ichiga olishi mumkin.


Java 7 dan oldin interfeyslar qanday ishlaganiga misol bilan boshlaylik .
8.4. Interfeyslar 161

NetBeans-ni ishga tushiring va InterfaceDemo nomli yangi Java loyihasini yarating. InterfaceDemo -da kodni almashtiring .
java quyidagicha:


1 paket interfeysi demo;
2
3 umumiy sinf InterfaceDemo {

to'rtta
5
6
7

umumiy statik void main(String[] args) { MyClass a = yangi MyClass();


a.someMethod();

sakkiz

9

o'n }


o'n bir}
12

System.out.println("Kontaktning qiymati "


+ MyInterface.myInt);

13-sinf MyClass MyInterface-ni amalga oshiradi
o'n to'rt {



o'n besh

16
17




o'n sakkiz
@Override
public void someMethod()
{
System.out.println("Bu MyClass-da joriy qilingan usul");

19 }


yigirma }
21
22 interfeysi MyInterface{
23

24
25
26
27}
int myInt = 5; void someMethod();

Ushbu misolda interfeys 22-27-qatorlarda e'lon qilingan. 24-satr maydonni e'lon qiladi (bu ochiq, statik va final kalit so'zlari bilan bilvosita e'lon qilinadi ), 25- satr esa usulni e'lon qiladi. Usulni e'lon qilishda

162 8 -bob. Obyektga yo‘naltirilgan dasturlash



interfeysda mavhum kalit so'zdan foydalanish shart emas ; usul sukut bo'yicha mavhum hisoblanadi.


13-20 qatorlar ushbu interfeysni amalga oshiradigan MyClass sinfini e'lon qiladi. Ushbu munosabatlarni bildirish uchun implements kalit so'zi ishlatiladi . Sinf ichida someMethod() usuli 15-19-qatorlarda amalga oshiriladi.

3-11 qatorlar main() usulini o'z ichiga olgan InterfaceDemo sinfini o'z ichiga oladi. main() usulida biz MyClass obyektini


yaratamiz va undan someMethod() ni chaqirish uchun foydalanamiz.
7-satrda. 9-qator myInt doimiysining qiymatini chop etadi. E'tibor bering, interfeyslardagi konstantalar statik bo'lgani uchun biz ularga MyClass ob'ekti nomi bilan emas, balki interfeys nomi (MyInterface.myInt) bilan murojaat qilamiz .
Ushbu dasturni ishga tushirganingizda, siz quyidagilarni olasiz
natija:


Bu MyClass-da qo'llaniladigan usul Konstantaning qiymati 5 ga teng
Bu misol Java 7 ning chiqarilishidan oldin interfeyslar qanday ishlaganini ko'rsatadi. Biroq, Java 8 da vaziyat biroz boshqacha.
o'zgardi.

Java 8 dan oldin interfeys faqat mavhum usullarni o'z ichiga olishi mumkin edi. Java 8 da til ostida paydo bo'ldi


interfeyslarda standart va statik usullarni saqlash .
Standart usullar va statik usullar qanday ishlashini ko'rish uchun MyInterface
-ga quyidagi ikkita usulni qo'shing. E'tibor bering, ikkala usul ham interfeysning o'zida amalga oshiriladi:

    1. Interfeyslar 163


umumiy statik bekor someStaticMethod()
{
System.out.println("Bu interfeysdagi statik usul");

}


umumiy standart bekor someDefaultMethod()
{
System.out.println("Bu interfeysdagi standart usul");

}


Keyin main() usuliga quyidagi qatorlarni kiriting :
a.someDefaultMethod(); MyInterface.someStaticMethod();
Dasturni saqlang va ishga tushiring. Siz quyidagi natijaga erishasiz:
Bu MyClass-da qo'llaniladigan usul
Konstantaning qiymati 5 ga teng Bu interfeysdagi standart usul Bu interfeysdagi statik usul
Java 8 dan beri interfeyslar shunday ishlaydi. Endi interfeyslarga metodlarni amalga oshirishni qo'shishingiz
mumkin. Biroq , interfeyslarda faqat usullarni amalga oshirish mumkin. standart va statik usullar.
Standart usullar va statik usullar interfeyslarga asosan ikkilik moslik uchun qo'shilgan. Oddiy qilib aytganda, bu interfeysni o'zgartirganingizda , ushbu interfeysni amalga oshiradigan sinflarni o'zgartirishingiz shart emasligini anglatadi.
Masalan, MyInterface interfeysiga yangi usul qo'shmoqchi ekanligingizni tasavvur qiling. Agar siz quyida ko'rsatilgandek interfeysga oddiygina usul deklaratsiyasini qo'shishga harakat qilsangiz , xatolik yuz beradi.
164 8 -bob. Obyektga yo‘naltirilgan dasturlash

Mening interfeysim{

int myInt = 5;


void someMethod();

Download 1,09 Mb.

Do'stlaringiz bilan baham:
1   ...   14   15   16   17   18   19   20   21   ...   24




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

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish