1. Lokal dəyişənlər
Gəlin, dəyişənlər haqqında bir az daha ciddi danışaq. Ancaq bu dəfə onların daxili quruluşunu yox, onlar olduğu kod ilə qarşılıqlı əlaqələrini müzakirə edəcəyik.
Bütün dəyişənlər, hansı ki metodların içində elan edilir, lokal dəyişənlər adlanır. Lokal dəyişən yalnız olduğu kod blokunda mövcuddur. Daha dəqiq desək, elan edildikdən sonra və olduğu kod blokunun sonuna qədər mövcuddur.
Sadəlik üçün bir nümunəyə baxaq:
| Kod | Dəyişənlərin əlçatanlığı |
|---|---|
|
|
Gəlin, lokal dəyişənlərin əlçatanlığı haqqında bir daha danışaq. Budur, fiqurlu mötərizələrdən ibarət bir kod bloku: bu, metodun gövdəsi, dövr operatorunun gövdəsi və ya sadəcə şərt operatorunun kod bloku ola bilər. Kod blokunda elan edilən dəyişən bu blokun sonuna qədər mövcuddur.
Əgər dəyişən dövr operatorunun gövdəsində elan edilirsə, o, yalnız həmin dövr operatorunun gövdəsində mövcud olur. Hər bir dövr iterasiyasında yaradılaraq məhv edilir.
Nümunə:
| Kod | Dəyişənlərin əlçatanlığı |
|---|---|
|
|
b adı ilə ikinci lokal dəyişəni yalnız ona görə elan edə bildik ki, b adlı ilk dəyişən, ikinci b dəyişəninin elan edildiyi kod blokunda görünmür.
2. Parametr-dəyişənlər
Əvvəl də dediyimiz kimi, hər bir metodun parametr-dəyişənləri ola bilər. Bəs onların görünürlüyü və yaşam müddəti necədir?
Burada hər şey olduqca sadədir. Parametr-dəyişənlər metodun koduna idarənin ötürülməsi zamanı yaradılır (metodun kodu icra olunmağa başlayır) və metodun işi tamamlananda silinir. Onlar metodun bütün daxilində görünürlər.
Nümunə:
| Kod | Dəyişənlərin əlçatanlığı |
|---|---|
|
|
Əvvəl də dediyimiz kimi, args — bu sadəcə string massiv tipində olan bir dəyişəndir. Və bütün parametr-dəyişənlər kimi, o da metodun daxilində hər yerdə əlçatandır. Amma nümunələrimizdə onu adətən nəzərə almırıq.
3. Sinifin dəyişənləri
Birinci səviyyə mühazirələrindən xatırladığınız kimi, sinif funksiyalar və dəyişənlərdən ibarət ola bilər. Funksiyalar adətən "sinif metodları", dəyişənlər isə "sinifin dəyişənləri" və ya "sinifin sahələri" adlandırılır. Əslində Java çərçivəsində bunlar sinonimdir.
Bəs sinifin dəyişənləri (və ya sahələri) nədir?
Sinifin dəyişənləri metod daxilində deyil, sinif daxilində elan edilən dəyişənlərdir.
Bunlara sinifin istənilən metodundan müraciət etmək olar. Kobud desək, sinifin dəyişənləri — sinifin bütün metodları üçün ümumi dəyişənlərdir.
Nümunə:
| Kod | Dəyişənlərin əlçatanlığı |
|---|---|
|
|
Bu nümunədə bizdə iki metod var — add() və remove(). add() metodu sinifin sum və count dəyişənlərini artırır, remove() metodu isə sum və count dəyişənlərini azaldır. Hər iki metod sinifin ümumi dəyişənləri ilə işləyir.
Lokal dəyişənlər metod yerinə yetirildiyi müddətcə mövcuddur. Sinifin isə dəyişənləri həmin dəyişənlərin aid olduğu sinif obyektləri mövcud olduğu müddətcə mövcuddur. Sinif obyektləri haqqında növbəti səviyyədə daha ətraflı öyrənəcəksiniz.
4. Statik dəyişənlər
Sinif dəyişənləri, sinif metodları kimi, statik və qeyri-statik (adi) ola bilər. Statik metodlar yalnız statik dəyişənlərə müraciət edə bilər.
11-ci səviyyədə biz statik dəyişənlər və metodların quruluşunu öyrənəcəyik və bu məhdudiyyətlərin səbəblərini başa düşəcəyik.
Bir sinif dəyişənini statik etmək üçün, onu elan etməzdən əvvəl static açar sözünü yazmaq lazımdır.
Statik dəyişənlər, elan edildiyi sinifin obyektlərinə deyil, birbaşa həmin sinifə bağlıdır. Buna görə onlar mövcuddur, hətta həmin sinifin heç bir obyekti yaradılmadıqda belə. Digər siniflərdən onlara müraciət etmək üçün aşağıdakı konstruksiyadan istifadə edə bilərsiniz:
ClassName.variableName
Nümunə:
| Kod | Dəyişənlərin əlçatanlığı |
|---|---|
|
|
Yuxarıdakı nümunədə biz ayrıca bir Storage sinif yaratdıq, count və sum dəyişənlərini oraya çıxardıq və onları statik elan etdik. İctimai statik dəyişənlərə proqramın istənilən metodundan müraciət etmək mümkündür (və yalnız metoddan deyil).
GO TO FULL VERSION