public String constructHelloSentence(String name) {
String resultSentence = "Hello world! My name is " + name;
System.out.println(resultSentence);
return resultSentence;
}
Burada mürəkkəb bir şey yoxdur: vəzifəsi ona ötürülən adla salamlama sətri yaratmaq olan Java metodu. Məsələn, kimi - Hello world! My name is Bobby
Metod bəyannaməsində hər bir açar sözə baxaraq (soldan sağa) metodun qurulmasını düzgün başa düşək. İlk açar sözümüz public
, və o, giriş dəyişdiricisini ifadə edir:
Modifikatorlara giriş
Onlar sinif üzvləri üçün icazə verilən görmə sahəsini, yəni dəyişənin və ya metodun istifadəsinə icazə verilən yerlərin məhdudlaşdırılmasını göstərir. Java-da aşağıdakı giriş modifikatorlarından istifadə olunur:-
ictimai : ictimai. Bu dəyişdirici ilə metodlar və ya sahələr açıqdır, digər siniflər (daha doğrusu, onların metodları və sahələri) cari paketdən və xarici paketlərdən görünür. Bu, məlum olan ən geniş giriş səviyyəsidir;
-
protected : bu dəyişdirici ilə metod və ya dəyişənlərə cari sinif və ya paketin istənilən yerindən və ya bunu miras qoyan siniflərdən, eləcə də digər paketlərdə olsalar belə, metod və ya sahələrdən daxil olmaq olar.
protected String constructHelloSentence(String name) {...}
-
Defolt dəyişdirici. Sinif sahəsi və ya metodunun dəyişdiricisi yoxdursa, defolt dəyişdirici tətbiq edilir. Bu halda, sahələr və ya üsullar cari paketdəki bütün siniflərə görünür (məsələn, qorunan kimi , lakin miras alındıqda görünmür).
String constructHelloSentence(String name) {...}
-
özəl : ictimai dəyişdiricinin əksi . Belə dəyişdiricisi olan metod və ya dəyişən yalnız elan olunduğu sinifdə mövcuddur.
private String constructHelloSentence(String name) {...}
String
Sonra metodun imzasında (xassələrini təsvir edən metodun birinci sətri) var .
Dəyəri qaytarın
Qaytarma dəyəri zəngdən sonra yerinə gələn verilənlərdir (metodun icrasının bəzi nəticəsi). Hər bir metodun qaytarma dəyəri var. Yoxsa yox?Qaytarma Dəyəri Metodları
Bu dəyər istənilən növ məlumat ola bilər: sadə tipli dəyişən və ya istinad tipi.String
Bu misalda metodun , xatırladığımız kimi, sətri təsvir edən sinif olan tipli obyekti qaytarmalı olduğunu göstəririk . Burada ikinci məqam sözdür return
. Onun qaytarılan dəyərlə birbaşa əlaqəsi var: ondan sonrakı dəyər metodun çağırıldığı yerə geri göndəriləcək və metodun özü bağlanacaq return
. Bu söz adətən metodun son sətirində görünür ( if, else..
. kimi müxtəlif qollu üsullar istisna olmaqla). Əgər kodu aşağıdakı sətirdən sonra yazsanız return
:
private String constructHelloSentence(String name) {
String resultSentence = "Hello world! My name is " + name;
return resultSentence;
System.out.println(resultSentence);
}
onda biz kompilyatordan lənətlər alacağıq, bu çox yaxşı deyil (tərtibçi cəfəngiyyatı tövsiyə etməyəcək). Siz həmçinin yadda saxlamalısınız ki, sonrakı məlumat növü с
metod imzasında elan edilənə uyğun olmalıdır. Haqqında daha çox return
oxuyun .
boş
Java-da nə üçün istifadə olunurvoid
? Bütün metodların qaytarılma dəyəri yoxdur. Bəzilərinin ya heç nəyi yoxdur, ya da heç nəyi geri qaytarmağa ehtiyac yoxdur. Onda nə etməli? Sonra metodda imza yazırıq void
. Qaytarma dəyəri olmadan metodumuz necə görünəcək?
protected void constructHelloSentence(String name) {
String resultSentence = "Hello world! My name is " + name;
System.out.println(resultSentence);
}
Yəqin fikir vermisiniz ki, qaytarılan dəyərlə yanaşı, return
So it is sözü də itib, çünki bizim metodumuz heç nə qaytarmamalıdır. Bununla belə, bura yerləşdirilə bilər, lakin heç bir mənası olmadan, yalnız return
; son sətirdə. Bu ümumiyyətlə faydasızdır, ona görə də void
metodlarda isteğe bağlıdır. void
Bununla belə, metoddan dərhal çıxmaq istədiyiniz budaqlar və ya döngələr kimi üsullarda faydalı şəkildə istifadə edilə bilər . Sonrakı üsul bəyannaməsi bizdə idi constructHelloSentence
.
Metod adları
constructHelloSentence
- metodun adı, bu və ya digər metodu ayırd edə biləcəyimiz fərqli xüsusiyyət. Və müvafiq olaraq, bu və ya digər metodu çağırın. Metod adları kiçik hərflə başlamalıdır, həm də dəvə qutusundan istifadə etməlidir (CamelCase, camel case): i.e. Addakı hər növbəti söz əvvəlki ilə bitişikdir və böyük hərflə yazılır. Metod adları metodu təsvir etməlidir (ən yaxşı şərh düzgün adlandırmadır). Bunun üçün fellərdən və ya fellərlə birləşmələrdən istifadə edin: getCat
, delete
, createCar
, və s. Bir sinif daxilində metod adları unikal olmalıdır (bir az sonra danışacağımız metodun həddən artıq yüklənməsi nəzərə alınmır). Gəlin təhlil etdiyimiz metoda daha çox nəzər salaq və görək ( String name
)
Metod parametrləri
Metodlar kənardan, yəni metodun çağırıldığı yerdən gələcək müəyyən məlumatlara malik ola bilər (ya da olmaya bilər). Bizim vəziyyətimizdəString
adı olan tip obyektinin gəldiyini görürük name
və daha sonra metodumuzda bu dəyişəndən istifadə edirik. Metodda qeyri-məhdud sayda parametrlərdən istifadə edə bilərsiniz, lakin 7-dən çoxu tövsiyə edilmir. Elementlərin dəqiq sayını bilmədikdə, lakin bütün bu elementlər eyni məqsəd üçün lazım olduqda və eyni tipdə olacaqsa (məsələn, String
), ellipsis istifadə olunur:
public void constructHelloSentence(String...name) {
...
}
Hər bir elementə müraciət belə olacaq: name[0]
Bu sizə nəyisə xatırladırmı? Düzdü, serial! Yazsaq, heç nə dəyişməyəcək:
protected void constructHelloSentence(String[] name) {
...
}
Elementlərə giriş də aşağıdakı formada olacaq: name[1]
Və daha bir şey. Metod arqumentləri yekun ola bilər :
public String constructHelloSentence(final String name) {
...
}
Bu o deməkdir ki, ad istinadı konkret obyektə bağlıdır String
və onu ləğv etmək olmaz. İstinad dəyişənləri ilə işləmək və onların qorunan sözlərlə qarşılıqlı əlaqəsi haqqında “ Java-da istinad məlumat növlərifinal
” materialında oxuya bilərsiniz .
Zəng üsulları
Beləliklə, biz üsulların yaradılmasını sıraladıq, indi onlardan istifadə haqqında danışaq. Java-da metodu necə çağırmaq olar? Java-da hər bir metod bir sinifdədir. Java-da çağırış metodlarının necə işlədiyini başa düşmək üçün gəlin bir sinfə keçək:public class StringConstructor {
public String constructHelloSentence(String name) {
String resultSentence = "Hello world! My name is " + name;
System.out.println(resultSentence);
return resultSentence;
}
}
Metodumuz statik olmadığından (bu, bugünkü məqalənin əhatə dairəsindən kənara çıxan ayrı bir müzakirə mövzusudur), onu çağırmaq üçün əvvəlcə obyekt yaratmalı və sonra onun üzərində metodu çağırmalısınız:
class Application{
public static void main(String[] args) {
StringConstructor stringConstructor = new StringConstructor();
stringConstructor.constructHelloSentence("Den");
}
}
Metodumuzun arqumentlərində ekranda görünən nəticədə görmək istədiyimiz sətri (ad) keçdik:
Hello world! My name is Den
Həm də yadda saxlamaq lazımdır ki, üsullar ehtiyac duyduğumuz qədər təkrar istifadə edilə bilər - heç bir məhdudiyyət yoxdur.
bu
this
Açar sözü tez-tez tənzimləyicilərdə olduğu kimi kodda görə bilərsiniz :
public void setValue(Long value) {
this.value = value;
}
Və bu nə deməkdir? this
Java-da bu, bu sinfin cari obyektinə istinaddır. Məsələn, bir obyekt yaratsaq:
StringConstructor stringConstructor = new StringConstructor();
sonra this
obyektin daxilində stringConstructor
eyni obyektə keçid olacaq. this
həm obyekt dəyişəninə istinad etmək üçün (yuxarıdakı təyinedicidə olduğu kimi), həm də hansısa metodu çağırmaq üçün istifadə olunur. Sinifimizi bir az yenidən yaza bilərik:
public class StringConstructor {
public String constructHelloSentence(String name) {
String resultSentence = this.getSentence() + name;
System.out.println(resultSentence);
return resultSentence;
}
private String getSentence() {
return "Hello world! My name is ";
}
}
Vasitəsilə this
biz tələb olunan sətiri götürmək üçün bu obyektin metodunu çağırırıq. Ancaq yenə də, bir qayda olaraq, bu üsullar üçün demək olar ki, istifadə edilmir, çünki onsuz da müəyyən bir obyektin metoduna istinad var; o, əsasən obyekt dəyişəni üçün istifadə olunur.
Metodun həddindən artıq yüklənməsi
Tutaq ki, bizə mahiyyətcə eyni məntiqi yerinə yetirən metod lazım idi, lakinHello world
! əvəzinə world
biz öz sözümüzü (simli) daxil etmək istəyirik. Amma artıq bir üsulumuz var constructHelloSentence
. Beləliklə, mahiyyətcə eyni funksionallığı yerinə yetirən bir metod üçün yeni bir ad tapmalıyıq? Necə olursa olsun: bu anda metodun həddindən artıq yüklənməsi köməyimizə gəlir. Metodun həddən artıq yüklənməsi, eyni metod adının bir sinifdə elan edilərkən bir neçə dəfə istifadə edilməsidir. Dil sintaksisi baxımından bəzi lokal məkanda iki eyni ad ola bilməz. Ancaq eyni adlarla, lakin fərqli arqumentlərlə üsulları elan etmək də mümkündür. Başqa sözlə, eyni adlara malik iki və ya daha çox metod, lakin fərqli giriş məlumatları olduqda sinif həddindən artıq yüklənmələri ehtiva edir:
public class Constructor {
public String constructHelloSentence(String name) {
String resultSentence = "Hello world! My name is " + name;
System.out.println(resultSentence);
return resultSentence;
}
protected String constructHelloSentence(String firstName, String secondName) {
String resultSentence = "Hello " + firstName + "! My name is " + secondName;
System.out.println(resultSentence);
return resultSentence;
}
}
Burada görürük ki, metodlarda eyni giriş modifikatoru (həmçinin qaytarma növü) olmamalıdır. Həddindən artıq yüklənmiş metod çağırılırsa, onda bir neçə elan edilmiş metoddan kompilyator avtomatik olaraq zəng zamanı göstərilən parametrlərə əsasən tələb olunanı müəyyən edir.
GO TO FULL VERSION