Variable Scope
Dəyişənlərin təsir dairəsi (variable scope) bu formadadır:
- Lokal dəyişənlər – elan olunduğu sətirdən daxilində olduğu kod bloku bitənədək;
- Instance dəyişənlər – elan olunduğu vaxtdan zibil qutusuna göndərilənədək (until object garbage collected);
- Class dəyişənlər – elan olunduğu vaxtdan proqram sonlananadək.
Metoda göndərilən parametr həmin metodun lokal dəyişəni hesab edilir.
public void testMethod(int a) { int b = 5; }
Bu metodun 2 lokal dəyişəni var – a
və b
. 3-cü sətirdə həm a
, həm də b
dəyişəninin təsir dairəsi bitir.
Ordering Elements in a Class
Element | Nümunə | Tələb edilirmi? | Harada yerləşməlidir? |
Paket elanı | package abc; |
Xeyr | Faylda 1-ci (ilkin) sətirdə |
Import ifadələri | import java.util.*; |
Xeyr | Paketdən sonra |
Class elanı | public class C |
Bəli | Import`dan sonra |
Dəyişən (field) elanı | int value; |
Xeyr | Class daxilində istənilən yerdə |
Metod elanı | void method() |
Xeyr | Class daxilində istənilən yerdə |
Comment kodun içərisində istənilən yerdə işlədilə bilər, məhdudiyyət qoyulmur, hətta paketdən əvvəl də gələ bilər. Metod və dəyişənlər isə məlumdur ki, ancaq class`ın daxilində istənilən yerdə işlədilə bilər. Burada əsas yadda saxlamalı məqam package, import ve class`ın faylda yerləşmə ardıcıllığıdır. package və import optional`dır, yəni istəyə bağlı olaraq istifadə edilə və ya edilməyə bilər. Ancaq class mütləq olmalıdır. Əgər package ve import istifadə edilərsə, onda ardıcıllıq mütləq belə olmalıdır:
package ⇒ import ⇒ class
Study Guide`da bunu yadda saxlamaq üçün yaxşı metod tövsiyə edilir: Picture sözünün ilk hecasını yada salırsız – PIC
- P(ackage)I(mport)C(lass)
Bir faylın (.java) içərisində bir neçə class yaradıla bilər, amma onlardan ancaq biri public
ola bilər. public olan class`ın adı faylın adı ilə mütləq eyni olmalıdır.
File: Names.java
public class Names {} class Surnames {}
Bu zaman faylın adı mütləq Names.java olmalıdır. Amma bütün class`lar default access ola bilər, yəni hər hansı bir classın public
olması mütləq deyil.