— Салом, Амиго! Ман ба ту дар бораи переанбори методҳо нақл мекунам.
— Онҳоро боз анаванда кардан мумкин? Чӣ хели рӯз имрӯз!
— Бо онҳо бисёр чизҳоро метавон кард, вале дар ин бора гап намезанем.
— Мувофиқам.
— Переанбор – ин як амалиёти хеле осон аст. Дар асл – ин ҳатто амалиёт нест, гарчанде баъзан онро бо истилоҳи тарсанда «параметрический полиморфизм» меноманд.
Гап дар он аст, ки ҳамаи методҳо дар дохили клас бояд номҳои беназир надошта бошанд.
— Ҳа, ман дар ин бора медонам.
— Пас ин аст кин муҳим нест. Росташ, муҳим нест. Метод бояд номаш беназир набошад. Беназир бояд иттифоқи ном ва параметрҳои навъи ин метод бошад. Онҳоро сигнатураҳои метод низ меноманд.
Код | Шарҳ |
---|---|
|
Ин тавр метавон кард. Ду метод номҳои беназир доранд. |
|
Ва ин тавр низ. Ду метод номҳои беназир (сигнатура) доранд. |
|
Ҳамаи методҳо ҳанӯз беназиранд. |
|
Вале ин тавр намешавад. Методҳо беназир нестанд, гарчанде типи баргаштанашон гуногун аст. |
|
Аммо ин тавр мешавад. Параметрҳои методҳо беназиранд. |
— Дар ягон ҷо ман инро дида будам.
— Аха. Вақте ки ту менависи System.out.println, Intellij IDEA ба ту навиштаҳо медиҳад ва ба ҷои он як чанд методҳоро бо параметрҳои гуногун print мебахшад. Компилятор танҳо методи лозимаро муайян мекунад, бо навъи параметрҳое, ки ту ба он медиҳӣ, ва онро дақиқ ҳисоб мекунад.
— Ин, гуфтан мумкин, мушкил нест. Аммо полиморфизм.
— Росташ — ин переопределение методҳо нест
Ба ҳар ҳол, ман диққати ту ба он ки номҳои параметрҳо аҳамият надоранд – онҳо пас аз компиляция гум мешаванд. Пас аз компиляция дар бораи метод маълум аст, ки танҳо ном ва навъҳои параметрҳои он.
GO TO FULL VERSION