JavaRush /Курсхо /All lectures for TG purposes /Переанбори методҳо

Переанбори методҳо

All lectures for TG purposes
Сатҳи , Дарс
дастрас

— Салом, Амиго! Ман ба ту дар бораи переанбори методҳо нақл мекунам.

— Онҳоро боз анаванда кардан мумкин? Чӣ хели рӯз имрӯз!

— Бо онҳо бисёр чизҳоро метавон кард, вале дар ин бора гап намезанем.

— Мувофиқам.

— Переанбор – ин як амалиёти хеле осон аст. Дар асл – ин ҳатто амалиёт нест, гарчанде баъзан онро бо истилоҳи тарсанда «параметрический полиморфизм» меноманд.

Гап дар он аст, ки ҳамаи методҳо дар дохили клас бояд номҳои беназир надошта бошанд.

— Ҳа, ман дар ин бора медонам.

— Пас ин аст кин муҳим нест. Росташ, муҳим нест. Метод бояд номаш беназир набошад. Беназир бояд иттифоқи ном ва параметрҳои навъи ин метод бошад. Онҳоро сигнатураҳои метод низ меноманд.

Код Шарҳ
public void print();
public void print2();
Ин тавр метавон кард. Ду метод номҳои беназир доранд.
public void print();
public void print(int n);
Ва ин тавр низ. Ду метод номҳои беназир (сигнатура) доранд.
public void print(int n, int n2);
public void print(int n);
Ҳамаи методҳо ҳанӯз беназиранд.
public int print(int a);
public void print(int n);
Вале ин тавр намешавад. Методҳо беназир нестанд, гарчанде типи баргаштанашон гуногун аст.
public int print(int a, long b);
public long print(long b, int a);
Аммо ин тавр мешавад. Параметрҳои методҳо беназиранд.

— Дар ягон ҷо ман инро дида будам.

— Аха. Вақте ки ту менависи System.out.println, Intellij IDEA ба ту навиштаҳо медиҳад ва ба ҷои он як чанд методҳоро бо параметрҳои гуногун print мебахшад. Компилятор танҳо методи лозимаро муайян мекунад, бо навъи параметрҳое, ки ту ба он медиҳӣ, ва онро дақиқ ҳисоб мекунад.

— Ин, гуфтан мумкин, мушкил нест. Аммо полиморфизм.

— Росташ — ин переопределение методҳо нест

Ба ҳар ҳол, ман диққати ту ба он ки номҳои параметрҳо аҳамият надоранд – онҳо пас аз компиляция гум мешаванд. Пас аз компиляция дар бораи метод маълум аст, ки танҳо ном ва навъҳои параметрҳои он.

Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION