java

Javada Yuklanma funksiya (Method Overloading)

Klass ichida nomi va funksiya turi(data type) bir xil bo’lgan  ikki yoki undan ortiq funksiyalar bo’lsa, bunday funksiyalar yuklanma funksiyalar(method overloading) deyiladi.

Yuklanma funksiyalar bir biridan farqi quyidagicha:

  1. Parametrlari bilan farq qiladi
  2. Ma’lumot turi
  3. Ma’lumot turlari ketma-ketligi bilan

Yuklanma funksiyani – static ko’pformalik (static polymorphism)  deb ham qarashimiz mumkin.

Ta’rif:

  1. Static ko’pformalik kompilyatsiya vaqtidagi bog’lanish yoki erta bog’lanish(binding) sifatida ham ma’lum
  2. Static bog’lanish(binding) kompilyatsiya vaqtida sodir bo’ladi. Funksiyalar yuklanma static bog’lanishga(binding) misol bo’ladi.

Yuqorida keltirib o’tilgan ta’riflar barchasi yuklanma  funksiyani argumetlari har xil bo’lgan holatlar uchun mos keladi. Endi sizlar bilan har bir holatni birma bir ko’rib chiqamiz

Yuklanma  funksiya parametiri va argumentlari bilan farq qilishga misol

Funksiya nomlari o’xshash lekin argumetlari bilan farq qiladi

  1. class DisplayOverloading {
  2.  
  3. public void disp(char c)
  4.  
  5. {
  6.  
  7. System.out.println(c);
  8.  
  9. }
  10.  
  11. public void disp(char c, int num)
  12.  
  13. {
  14.  
  15. System.out.println(c + " "+num);
  16.  
  17. }
  18.  
  19. }
  20.  
  21. class Sample
  22.  
  23. {
  24.  
  25. public static void main(String args[])
  26.  
  27. {
  28.  
  29. DisplayOverloading obj = new DisplayOverloading();
  30.  
  31. obj.disp('a');
  32.  
  33. obj.disp('a',10);
  34.  
  35. }
  36.  
  37. }

Ekrada :

a

a 10

Yuqoridagi misolda disp() funksiyasi yuklanma funksiya shaklida yaratilyapti. Bunda funksiyalar bir biridan argumetlar soni bilan farqlanyapti.

Yuklanma funksiya – ma’lumot turlari bilan farq qilishi

  1. class DisplayOverloading2
  2.  
  3. {
  4.  
  5. public void disp(char c)
  6.  
  7. {
  8.  
  9. System.out.println(c);
  10.  
  11. }
  12.  
  13. public void disp(int c)
  14.  
  15. {
  16.  
  17. System.out.println(c );
  18.  
  19. }
  20.  
  21. }
  22.  
  23.  
  24. class Sample2
  25.  
  26. {
  27.  
  28. public static void main(String args[])
  29.  
  30. {
  31.  
  32. DisplayOverloading2 obj = new DisplayOverloading2();
  33.  
  34. obj.disp('a');
  35.  
  36. obj.disp(5);
  37.  
  38. }
  39.  
  40. }

Ekranda:

a

5

Yuklanma – ma’lumot turlarining ketma-ketligi bilan farq qilishi.

  1. class DisplayOverloading3
  2.  
  3. {
  4.  
  5. public void disp(char c, int num)
  6.  
  7. {
  8.  
  9. System.out.println("Bu birinchi disp() methodi ");
  10.  
  11. }
  12.  
  13. public void disp(int num, char c)
  14.  
  15. {
  16.  
  17. System.out.println("Bu ikkinchi disp() methodi " );
  18.  
  19. }
  20.  
  21. }
  22.  
  23. class Sample3
  24.  
  25. {
  26.  
  27. public static void main(String args[])
  28.  
  29. {
  30.  
  31. DisplayOverloading3 obj = new DisplayOverloading3();
  32.  
  33. obj.disp('x', 51 );
  34.  
  35. obj.disp(52, 'y');
  36.  
  37. }
  38.  
  39. }

Ekranda:

Bu birinchi disp() methodi

Bu ikkinchi disp() methodi

Bu misolda yuklanma funksiyasi shaklida yaratilgan disp() funksiyalari bor ular bir biridan ma’lumot turlarining ketma ketligi bilan farq qilyapti. Ya’ni ma’lumot turlarini joylashuvi.

Ishlatish mumkin bo’lgan va mumkin bo’lmagan yuklanma funksiyalarni qisqacha ta’riflari

1 – holat:

int mymethod(int a, int b, float c)

int mymethod(int var1, int var2, float var3)

Natija: Compile time error. Chunki bu funksiyalarni argumentlari, ma’lumot turlarini ketma-ketligi va ma’lumot turlari bir xil. Dastur ishga tushgan paytida qaysi bir funksiyaga murojaat qilishni tanlay olmaydi ya’ni bu funksiyalarni farqlay olmaydi.

2 – holat:

int mymethod(int a, int b)

int mymethod(float var1, float var2)

bu funksiyalar ishalatishga yaroqli chunkiy funksiyalar bir biridan ma’lumot turlari bilan farq qilyapti.

3 – holat:

int mymethod(int a, int b)

int mymethod(int num)

bu funksiyalar ishalatishga yaroqli chunki funksiyalar bir biridan raqamlar argumenti bilan farq qilyapti.

4 -holat:

float mymethod(int a, float b)

float mymethod(float var1, int var2)

bu funksiyalar ishalatishga yaroqli chunki funksiyalar ma’lumotlar ketma-ketligi bilan farq qilyapti(joylashuvi)

5 – holat:

int mymethod(int a, int b)

float mymethod(int var1, int var2)

Natija: Compile time error. Chunki bu funksiyalar turli xil turdagi ma’lumotlarni qaytaryapti birinchi funksiya ikkinchisi float.

  1. void sum(int a,long b)
  2. void sum(long a,int b)

Natija: Compile time error. Bu holatda ma’lumot turlari har xil bo’lgani bilan ikkala funksiya ham butun sonlarni saqlovchi tur shuning uchun dastur xato beradi.

G'ayratjon Rayimjonov
G'ayratjon Rayimjonov

G'ayratjon Rayimjonovning so'nngi maqolalari (hammasini ko'rish)

(289 marta o'qilgan, bugun 1 marta o'qildi)

O'xshash maqolalar: