CodeGym /Kurslar /Java SELF AZ /Metodların yüklənməsi - overloading

Metodların yüklənməsi - overloading

Java SELF AZ
Səviyyə , Dərs
Mövcuddur

Metodların yüklənməsi

Və bugünkü digər maraqlı mövzu — metodların yüklənməsi. Və ya çox vaxt buna overloading (yenidən təyin etmə — bu overriding) deyilir.

Yenidən təyin etmədən fərqli olaraq, yüklənmə — olduqca sadə əməliyyatdır. Əslində, bu, metodlarla bağlı bir əməliyyat belə deyil, baxmayaraq ki, çox vaxt bunu qorxunc bir ifadə ilə adlandırırlar — parametrik polimorfizm.

Məsələ burasındadır ki, sinif daxilindəki bütün metodlar unikal adlara malik olmalıdır. Bax, bu belə deyil. Daha doğrusu, ümumiyyətlə belə deyil. Metod unikal ada malik olmamalıdır. Unikal olmalıdır metodun adı və parametrlərinin tiplərinin birləşməsidir. Belə birləşmələrə həmçinin metodların siqnaturaları da deyilir.

Nümunələr:

Kod Təsvir
public void print();
public void print2();
Belə etmək olar. İki metod unikal adlara malikdir.
public void print();
public void print(int n);
Belə də etmək olar. İki metod unikal adlara (siqnaturalara) malikdir.
public void print(int n, int n2);
public void print(int n);
Hələ də unikal metodlar
public int print(int a);
public void print(int n);
Belə etmək isə olmaz. Metodlar — unikal deyil. Tipləri fərqli olsa belə.
public int print(int a, long b);
public long print(long b, int a);
Belə isə — olar. Metodların parametrləri unikaldır.

Siqnaturaya daxildir: metodun adı və parametrlərin tipləri. Daxil deyil: metodun nəticə tipi və parametrlərin adları. Sinifdə eyni siqnaturaya malik iki metod ola bilməz: kompilyator hansı metodun çağrılacağını anlaya bilməz.

Parametrlərin adları əhəmiyyət daşımır : onlar kompilyasiya zamanı itirilir. Kompilyasiyadan sonra metod haqqında yalnız adı və parametrlərin tipləri məlumdur. Nəticə tipi itməsə də, funksiya nəticəsini nəyəsə təyin etmək zəruri deyil, buna görə də onu siqnaturaya daxil etmirlər.

OOP prinsiplərinə görə, polimorfizm — müxtəlif realizasiyaların bir interfeys arxasında gizlədilməsidir. Və məsələn, System.out.println() metodunun çağırılmasında, parametrlərdən asılı olaraq müxtəlif metodlar çağırıldığından, bu formal olaraq polimorfizm tərifinə uyğun gəlir.

Məhz buna görə də, bir sinifdə eyni ada malik müxtəlif metodlar, zəif də olsa, polimorfizmin bir forması hesab olunur.


Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION