1. Parametrlarni uzatish
Mana endi eng qiziq qism boshlandi. Siz allaqachon System.out.println() kabi metodlarga parametrlarni uzatishni bilasiz, metodlarga parametrlardan foydalanish orqali ulardan foydalanishni juda foydali qiladi.
Qanday qilib parametrli metodni e'lon qilamiz? Aslida bu juda oddiy:
public static void nomi(parametrlar)
{
metod kodi
}
Bu yerda nomi — metodning noyob nomi, va metod kodi — metodni tashkil etuvchi buyruqlar. parametrlar — metodning parametrlari, vergul bilan ajratilgan. Keling, bu shablonni batafsilroq ko'rib chiqamiz:
public static void nomi(tip1 nomi1, tip2 nomi2, tip3 nomi3)
{ metod kodi
}
Misollar:
| Kod | Izoh |
|---|---|
|
print metodi e'lon qilinadi String str parametri bilan |
|
print metodi e'lon qilinadi ikki parametrlar bilanString strint count |
|
write metodi e'lon qilinadi ikki parametrlar bilanint xint y |
Agar metodda parametrlar bo'lishini xohlamasak, shunchaki qavslarni bo'sh qoldiramiz.
Parametrlar — bu metodning maxsus o'zgaruvchilari. Ular yordamida metodni chaqirishda turli qiymatlar uzatilishi mumkin.
Keling, masalan, ekranga berilgan matn qatorini ma'lum bir marta chiqaradigan metod yozamiz.
Matnni ekranga bir necha marta chiqarish kodini yozishni allaqachon bilasiz. Ammo qaysi matnni chiqarish kerak? Va necha marta? Shu uchun bizga parametrlar kerak bo'ladi.
Mana, bu masala kodingiz qanday ko'rinishda bo'ladi:
| Kod | Izoh |
|---|---|
|
Metod printLines quyidagi parametrlari bilan e'lon qilindi:String text, int countMetod count marta ekranga text qatorini chiqaradiMetodni chaqirish printLines turli parametrlari bilan |
Har safar metod chaqirilganda uning o'zgaruvchi-parametrlariga uzatilgan qiymatlar tayinlanadi va shundan so'nggina metod ichidagi buyruqlar bajarila boshlaydi.
2. Metod argumentlari
Yana bir oz e'tiboringizni parametrli metodning chaqirilishiga qaratmoqchiman.
Metodga uzatilgan qiymatlar uning chaqirilishida metodning argumentlari deb ataladi.
Keling, yana bir bor misolni ko'rib chiqaylik:
| Kod | Izoh |
|---|---|
|
Metod printLines quyidagi parametrlari bilan e'lon qilindi:String text, int countMetod count marta ekranga text qatorini chiqaradiMetodni chaqirish printLines quyidagi parametrlari bilan:text = "Salom"; count = 10;text = "Xayr"; count = 20; |
Metod printLines birinchi marta chaqirilganda, uning o'zgaruvchi-parametrlari quyidagi qiymatlarni oldi: String text = "Salom", int count = 10.
Metod printLines ikkinchi marta chaqirilganda, uning o'zgaruvchi-parametrlari boshqa qiymatlarni oldi: String text = "Xayr", int count = 20.
Metod parametrlari — bu metod chaqirilganda ma'lum qiymatlar tayinlanadigan o'zgaruvchilar. O'zlari esa "Salom", "Xayr", 10 va 20 metodning argumentlari deb ataladi.
3. Metod chaqirilishida o'zgaruvchilar nomining qarama-qarshiligi
Metod argumentlari sifatida o'zgaruvchilardan foydalanish mumkin. Bu oddiy va tushunarli, lekin ba'zi murakkabliklarni keltirishi mumkin. Xuddi shu misolni ko'rib chiqamiz, lekin argumentlarni alohida o'zgaruvchilarga ajratamiz:
| Kod | Izoh |
|---|---|
|
Metod printLines quyidagi parametrlari bilan e'lon qilindi:String text, int countMetod count marta ekranga text qatorini chiqaradiMetodni chaqirish printLines quyidagi parametrlari bilan:text = str;count = n; |
Hech qanday qiyinchilik yo'q: bizda str o'zgaruvchisi bor, uning qiymati metod chaqirilganda text o'zgaruvchisiga tayinlanadi. Bizda n o'zgaruvchisi bor, uning qiymati metod chaqirilganda count o'zgaruvchisiga tayinlanadi. Endi esa qaysi qiyinchilik borligini ko'rib chiqaylik, agar main metodda o'zgaruvchilarni qayta nomlasak:
| Kod | Izoh |
|---|---|
|
Metod printLines quyidagi parametrlari bilan e'lon qilindi:String text, int countMetod count marta ekranga text qatorini chiqaradiMetodni chaqirish printLines quyidagi parametrlari bilan:text = text;count = count; |
Ikki narsaga diqqat qiling
Birinchi: bizda har xil metodlarda bir xil nomli o'zgaruvchilar bor. Bu har xil o'zgaruvchilar (biz ularni turli ranglarda ajratdik). Barcha narsa avvalgi misoldagi kabi ishlaydi, main metoddagi o'zgaruvchilar str va n nomlari bilan atalgan edi.
Ikkinchi: metod chaqirilganda hech qanday sehr bo'lmaydi. O'zgaruvchi-parametrlarga shunchaki argument qiymatlari tayinlanadi. Bu qanday bo'lishidan qat'iy nazar — bu aniq sonlar, qatorlar, o'zgaruvchilar yoki ifodalar bo'lsin.
Main metoddagi o'zgaruvchilarni qayta nomlashdan so'ng hech narsa o'zgarmadi. Bu turli metodlardagi har xil o'zgaruvchilar bo'lib qoldi. text va text o'zgaruvchilari orasida hech qanday sehrli aloqalar yo'q.
4. Metodlarga yo'nalishlarni uzatish
Umid qilamanki, siz avvalgi leksiyadan hamma narsani tushundingiz, chunki endi biz argumentlarni metodlarga uzatishni yana bir bor ko'rib chiqamiz, faqat yanada chuqurroq.
Bilganingizdek, ba'zi o'zgaruvchilar Java-da o'z qiymatlarini emas, balki ushbu qiymatlar joylashgan xotira blokining manzilini (havola) saqlaydi. Masalan, qator o'zgaruvchilari yoki massiv o'zgaruvchilari shunday ishlaydi.
Agar siz massiv o'zgaruvchisiga boshqa massiv o'zgaruvchisini tayinlasangiz, nima bo'ladi? To'g'ri. Ikki o'zgaruvchi xotirada bir xil konteynerga havola qiladi:

Agar ushbu o'zgaruvchilardan biri metodning parametr o'zgaruvchisi bo'lsa, nima bo'ladi?
| Kod | Izoh |
|---|---|
|
Metod printArraySum o'tkazilgan massivdagi sonlarning yig'indisini hisoblaydi va uni ekranda chiqaradi |
Huddi shunday bo'ladi: data parametr o'zgaruvchisi months o'zgaruvchisi bilan bir xil konteynerga havola qiladi. Metod chaqirilganda shunchaki data = months tayinlash sodir bo'ladi.
Ikki o'zgaruvchi bir xil butun sonlar konteyneriga havola qilishidan, printArraySum metod faqat massivdan qiymatlarni o'qib qolmasdan ularni o'zgartirishni ham qila oladi!
Masalan, biz o'zimizning maxsus metodimizni yozishimiz mumkin, u ikki o'lchamli massivni bir xil qiymatlar bilan to'ldiradi. Mana, bu qanday bo'lishi mumkin edi:
| Kod | Izoh |
|---|---|
|
Metod fill berilgan ikki o'lchamli massivning barcha hujayralarini aylanib chiqadi va ularga value qiymatini tayinlaydi.Ikki o'lchamli massiv yaratish. Butun massivni 8 soni bilan to'ldirish. |
5. Bir xil nomli metodlar
Endi esa bir marta metodlar nomlariga qaytamiz.
Java standartlari har bir klassdagi barcha metodlar unikal nomlarga ega bo'lishi kerakligini talab qiladi. Ya'ni, bir klassda bir xil metodlarni e'lon qilish mumkin emas.
Lekin metodlarni bir xil deb hisoblaganda faqat nomlar emas, balki parametrlar tiplari hisobga olinadi! Parametr o'zgaruvchilarining nomlari esa hisobga olinmaydi. Misollar:
| Kod | Izoh |
|---|---|
|
Ushbu uchta metod har xil deb hisoblanadi. Ularni bir klassda e'lon qilish mumkin. |
|
Bu besh metodning hammasi har xil deb hisoblanadi. Ularni bir klassda e'lon qilish mumkin. |
|
Bu ikki metod bir xil deb hisoblanadi (ularni bir klassda e'lon qilish mumkin emas). |
Nima uchun ba'zi metodlar bir xil deb hisoblanadi, boshqalari esa har xil? Va nega metodni unikal deb aniqlashda parametr o'zgaruvchilarining nomlari hisobga olinmaydi?
Umuman olganda, metodning unikalligi nima uchun kerak? Gap shundaki, kompilator sizning dasturingizni kompilyatsiya qilayotganda, u aniq bilishi kerak, siz qaysi funksiyani/metodni ma'lum joyda chaqirayotganingizni.
Masalan, siz System.out.println("Salom") deb yozasiz. Kompilator aqlli, va u buni tezda tushunadi, bu yerda println() metodi String parametr bilan chaqirilmoqda.
Agar siz System.out.println(1.0) deb yozsangiz, kompilator bu yerda println() metodi double parametr bilan chaqirilmoqda deb tushunadi.
Kompilator metod chaqirilganda argumentlar va parametrlardagi turlarning mos kelishiga e'tibor beradi, ammo argumentning nomiga hech qanday e'tibor bermaydi. Java-da parametr o'zgaruvchilarning nomlari kompilatorning metodni aniqlashiga yordam bermaydi. Shu sababli, u metodni unikalligi aniqlanayotganda hisobga olinmaydi.
Metod nomi va uning parametrlar turlari metodning imzosi deb ataladi. Misol: sum(int, int)
Har bir klassda metodlarning unikal nomlari emas, balki unikal imzolari bo'lishi kerak.
GO TO FULL VERSION