Artıq danışmışdıq ki, siniflər mürəkkəb məlumat tipləridir. İndi isə Java-maşın tərəfindən siniflərin işlənməsinə bir az nəzər salaq: Java-da hər şey obyekt sayılır, hətta sinif də. Sinif bir obyektdir. Maraqlıdır? Onda davam edək.
Sinifin yaddaşa yüklənməsi
Əslində, sinif yaddaşa yüklənərkən üç xüsusi “obyekt” yaradılır:

Şəkilin qısa təsviri
Sarı düzbucaqlı:
Kod faylı diskin üzərində ".class" uzantısı ilə saxlanılır. Bu fayl sinif, onun sahələri və metodları haqqında məlumat, eləcə də bayt-kod ilə kompilyasiya edilmiş metod kodunu ehtiva edir.
Narıncı düzbucaqlı:
Java-maşın sinifi yaddaşa yükləyərkən, onun bayt-kodunu kompüterin prosessoru və əməliyyat sisteminə uyğun olaraq maşın koduna kompilyasiya edir. Bu maşın koduna yalnız Java-maşın daxil ola bilir: biz Java-proqramçıları olaraq ona keçidimiz yoxdur.
Yaşıl düzbucaqlı:
Java-maşın xüsusi bir obyekt yaradır ki, burada sinifin bütün statik dəyişənləri və metodları saxlanılır. Bu "obyektə" sinifin adı üzrə keçidiniz olur.
Məsələn, siz java.lang.Math.PI
yazdığınızda, PI
adlı statik dəyişənə müraciət edirsiniz, hansı ki, java.lang.Math
sinifində saxlanılır. Bax bu java.lang.Math
bizim yaşıl düzbucaqlımızdır. Onun içində PI
adlı statik dəyişən saxlanılır.
Mavi düzbucaqlı:
Java-maşın sinif kodunu yaddaşa yükləyərkən, həmin sinif haqqında məlumat saxlayan xüsusi bir java.lang.Class
tipli obyekt yaradır: sinifin adı, metodların adları və tipləri, sahələrin tip və adları və s.
"Class" adı bir az çaşdırıcı ola bilər. Daha məntiqli olardı ki, ClassInfo adlandırıla. Bu sinif yalnız yaddaşa yüklənmiş sinif haqqında məlumat saxlayır.
Sinif obyektini istənilən tipdən aşağıdakı şəkildə almaq mümkündür:
Class ad = SinifAdi.class;
Nümunələr:
Kod | Qeyd |
---|---|
|
Class tipli obyekt alırıq, String sinfi haqqında məlumat ilə. |
|
Class tipli obyekt alırıq, Object sinfi haqqında məlumat ilə. |
|
Class tipli obyekt alırıq, Integer sinfi haqqında məlumat ilə. |
|
Class tipli obyekt alırıq, int tipi haqqında məlumat ilə. |
|
Class tipli obyekt alırıq, void tipi haqqında məlumat ilə. |
Sinif təsvir edən obyektə keçidi obyektlərdə də almaq olar: bunun üçün hər bir obyektdə Object
sinifindən miras alınmış getClass()
metodu var.
Nümunələr:
Kod | Qeyd |
---|---|
|
String.class ilə eyni obyektdir |
|
Integer.class ilə eyni obyektdir |
|
Boolean.class ilə eyni obyektdir |
GO TO FULL VERSION