1. Giriş modifikatorları
Hər bir metod əvvəlcədən müəyyən "giriş modifikatorları" ilə işarələnə bilər. Bunlar aşağıdakı açar sözlərdir: public
, protected
, private
.
Bu "giriş modifikatorları" metodun digər siniflərdən girişini məhdudlaşdırmağa imkan verir.
Məsələn, əgər metodunu elan edərkən private
açar sözünü yazsaq, bu metodu yalnız onun elan edildiyi sinifdən çağırmaq olar. public
açar sözü isə metodun istənilən sinifin istənilən metodundan çağırılmasına icazə verir.
Cəmi 3 növ modifikator, amma metod girişinin 4 tipi mövcuddur, çünki giriş modifikatorunun olmaması da bir məna ifadə edir.
Giriş... | ||||
---|---|---|---|---|
Modifikatorlar | İstənilən sinifdən | Varis sinifdən | Öz paketindən | Öz sinifindən |
public |
Var | Var | Var | Var |
protected |
Yox | Var | Var | Var |
modifikatorsuz | Yox | Yox | Var | Var |
private |
Yox | Yox | Yox | Var |
1. public
modifikatoru.
public
modifikatoru ilə işarələnmiş metoda (dəyişənə və ya sinifə) proqramın istənilən yerindən müraciət etmək olar. Bu ən yüksək açıqlıq səviyyəsidir – heç bir məhdudiyyət yoxdur.
2. private
modifikatoru.
private
modifikatoru ilə işarələnmiş metoda (dəyişənə və ya sinifə) yalnız onun elan edildiyi həmin sinifdən müraciət etmək olar. Qalan bütün siniflər üçün bu metod (və ya dəyişən) - görünməzdir və "sanki mövcud deyil". Bu ən yüksək qapalılıq səviyyəsidir — yalnız öz sinifi.
3. Modifikatorsuz (standart modifikator).
Əgər metod (və ya dəyişən) heç bir modifikatorla işarələnməyibsə, onlar "standart modifikator" ilə işarələnmiş kimi hesab olunur. Bu modifikatoru olan dəyişənlər və ya metodlar (yəni ümumiyyətlə heç biri olmayanlar) yalnız eyni paketdən olan bütün siniflərə görünür. Və yalnız onlara. Bu modifikator bəzi hallarda package
adlanır, çünki dəyişənlərə və metodlara giriş onların sinfinin yerləşdiyi paketin bütün elementlərinə açıqdır.
4. protected
modifikatoru.
protected
modifikatoru ilə işarələnmiş metoda həmin sinifdən, həmin paketdən və varis siniflərdən (metodun elan edildiyi sinifdən miras alan siniflərdən) müraciət etmək olar. Bu mövzunu Java Core missiyasında daha ətraflı araşdıracağıq.
Java Syntax missiyasının sonuna qədər bütün metodlarınıza (eləcə də siniflərinizə və sinif dəyişənlərinə) public
modifikatorunu göstərə bilərsiniz. Digər modifikatorlara yalnız OOP-ni fəal şəkildə öyrənməyə başladıqda ehtiyacınız olacaq.
Modifikatorlar niyə lazımdır?
Söhbət eyni vaxtda onlarla və yüzlərlə proqramçı tərəfindən yazılan böyük layihələrdən gedir.
Bəzən elə hallar olur ki, proqramçı sinifinin çox böyük metodunu hissələrə bölmək və əlavə metodlar yaratmaq istəyir. Lakin eyni zamanda digər proqramçıların bu əlavə metodları çağırmasını istəmir, çünki bu halda sinifin kodu düzgün işləməyə bilər.
Məhz buna görə belə modifikatorlar icad olunub. Əlavə metodu private ilə işarələdiniz, və sizin sinifdən başqa heç bir kod bu əlavə metodu görə bilməz.
2. static
açar sözü
static
açar sözü metodu statikə çevirir. Bu nədir, daha sonra öyrənəcəyik, amma indi statik metodlarla bağlı bir neçə faktı yadda saxlayaq.
Fakt 1. Statik metod heç bir obyektə bağlı deyil, amma elan edildiyi sinifə aiddir. Statik metodu çağırmaq üçün aşağıdakı yazılır:
SinifAdı.metodAdı()
Statik metodların nümunələri:
Sinif adı | Statik metod adı | |
---|---|---|
Thread.sleep() |
Thread |
sleep() |
Math.abs() |
Math |
abs() |
Arrays.sort() |
Arrays |
sort() |
Sinif adı statik metodun adına qədər yazmaq lazım deyil, əgər statik metodu içəridən çağırırsınızsa — eyni sinifdən. Məhz buna görə, hər dəfə çağırılan statik metodların adlarından əvvəl Solution
yazmağa ehtiyacınız yoxdur.
Fakt 2. Statik metod öz sinifinin qeyri-statik metodlarına müraciət edə bilmir. Statik metod yalnız statik metodlara müraciət edə bilər. Buna görə də, main
metodundan çağırmaq istədiyiniz bütün metodları statik elan edirik.
Niyə? OOP-ni öyrənməyə başladıqda və statik metodların necə işlədiyini anladıqda bu suala özünüz cavab verə biləcəksiniz.
3. throws
açar sözü
Metod bəyan etmələrində çox güman ki, qarşınıza çıxan başqa bir açar söz var — bu, throws
sözüdür. O, giriş modifikatorları və static
açar sözündən fərqli olaraq metodun parametrlərindən sonra yerləşir:
public static tip adı(parametrlər) throws Exception
{
metodun kodu
}
Onun mənasını tam olaraq daha sonra, istisnaları öyrənəndə dərk edəcəyik.
Amma qısa şəkildə toxunaraq demək olar ki, throws
açar sözü ilə işarələnmiş metodda Exception
(tamamən ondan irsən alınmış siniflər) tipində xətalar (istisnalar) meydana gələ bilər. Əgər sinifdə bir neçə növdə xəta baş verə bilərsə, bütün növləri vergüllə ayırmaq lazımdır.
4. main
metodu
Bütün modifikatorları ilə metodun elan edildiyi sətir, həmin metodu digər siniflərdən və metodlardan necə çağırılacağını, hansı tip nəticəni qaytaracağını və işləyərkən hansı mümkün səhvlərin baş verə biləcəyini müəyyən edəcək.
Belə bir sətir metodun elan edilməsi adlanır və ümumi görünüşü belədir:
giriş əldə modifikatorları static tip ad(parametrlər) throws xətalar
Harada giriş əldə modifikatorları
— bunlar public
, protected
, private
və ya heç biri;
static
statik metod üçün qoyulur (statik olmayan metodlar üçün yoxdur)
tip
— funksiyanın nəticə tipi (void
əgər nəticə yoxdursa)
İndi, çox güman ki, metodun main
elanında bütün açar sözlərin nə demək olduğunu başa düşürsünüz:
public static void main(String[] args) throws Exception
main
metodunun elanı
main()
metoduna hər hansı bir sinifdən giriş mümkündür, bu barədə public
sözü danışır.
Metod statikdir (onu açıq şəkildə Solution.main()
şəklində çağırmaq olar).
main
metodu heç bir nəticə qaytarmır. Nəticə tipi — void
(boş tip/süni tip)
main
metodu parametr qəbul edir(!): sətirlərin massivi. args
adı bizə "proqramın arqumentləri" haqda ipucu verir. Proqram işlədilərkən ona parametrlər — sətirlərdən ibarət massiv ötürmək olar. Bu massiv də args
massivində saxlanacaqdır main()
metodunun.
main()
metodunda Exception
tipində (və ya onun törəmələrində) işlənməmiş səhvlər yarana bilər.
GO TO FULL VERSION