Sinf - bu murakkab ma'lumotlar turi ekanligini allaqachon aytgan edik. Endi sinflarning ikkinchi tomoniga - Java mashinasi tomonidan ishlov berishga ozgina to'xtalaylik: Java'da hamma narsa obyekt, hatto sinf ham. Sinf obyekt hisoblanadi. Qiziqmi? Unda davom etamiz.
Sinfni xotiraga yuklash
Aslida, sinfni xotiraga yuklashda uchta maxsus "obyekt" yaratiladi:
Rasmning qisqacha tavsifi
Sariq to'rtburchak:
Kodni saqlovchi fayl diskda ".class" kengaytmasi bilan saqlanadi. U sinf haqida ma'lumotni, uning maydonlari va metodlarini, shuningdek, metodlarning baytkodga kompilyatsiya qilingan kodini o'z ichiga oladi.
To'q sariq to'rtburchak:
Java mashinasi sinfni xotiraga yuklaganda, u baytkodni kompyuterning prosessori va operatsion tizimini hisobga olgan holda mashina kodiga kompilyatsiya qiladi. Bu mashina kodiga kirish faqat Java mashinasi uchun mavjud: biz, Java dasturchilari, uni ko'ra olmaymiz.
Yashil to'rtburchak:
Java mashinasi sinfning barcha statik o'zgaruvchilari va metodlarini o'z ichiga olgan bir obyekt yaratadi. Bu "obyekt"ga siz sinf nomi orqali kirishingiz mumkin.
Misol uchun, siz java.lang.Math.PI deb yozganingizda, siz java.lang.Math sinfida joylashgan statik o'zgaruvchi PIga murojaat qilasiz. Mana shu java.lang.Math bizning yashil to'rtburchakdir. Va aynan uning ichida statik o'zgaruvchi PI joylashgan.
Ko'k to'rtburchak:
Java mashinasi kodni xotiraga yuklaganda, u maxsus turdagi obyekt, ya'ni java.lang.Class ni yaratadi, u yuklangan sinf haqida ma'lumotlarni o'z ichiga oladi: uning nomi, metodlarning nomlari, maydon nomlari va turlari va boshqalar.
"Class" nomi biroz chalg'itishi mumkin. Uni ClassInfo deb nomlash maniqiyroq bo'lar edi: bu sinf faqat yuklangan sinf haqida ma'lumotni saqlaydi.
Sinf obyektini har qanday turdan quyidagi ko'rinishdagi buyruq orqali olish mumkin:
Class nom = Sinfnomi.class;
Misollar:
| Kod | Izoh |
|---|---|
|
Class turidagi obyektni String sinfi haqida ma'lumot bilan olamiz |
|
Class turidagi obyektni Object sinfi haqida ma'lumot bilan olamiz |
|
Class turidagi obyektni Integer sinfi haqida ma'lumot bilan olamiz |
|
Class turidagi obyektni int turi haqida ma'lumot bilan olamiz |
|
Class turidagi obyektni void turi haqida ma'lumot bilan olamiz |
Sinf tavsifini beradigan obyektga havolani obyektdan ham olish mumkin: buni har bir obyektga Object sinfidan meros bo'lib o'tuvchi getClass() metodi yordamida qilish mumkin.
Misollar:
| Kod | Izoh |
|---|---|
|
String.class bilan bir xil obyekt |
|
Integer.class bilan bir xil obyekt |
|
Boolean.class bilan bir xil obyekt |
GO TO FULL VERSION