— Salom, Amigo! Men senga metodlarni ortiqcha yuklash haqida aytib beraman.
— Ularni hattoki ortiqcha yuklash mumkinmi?! Bugun qanday kun bo'ldi axir!
— Ular bilan juda ko'p narsalarni qilish mumkin, lekin bu haqida gapirmaymiz.
— Roziman.
— Ortiqcha yuklash – bu juda oddiy operatsiya. Aslida – bu hatto metodlarga nisbatan operatsiya emas, garchi uni ba'zida qo'rqinchli so'z bilan atasalar ham – parametrik polimorfizm.
Gap shundaki, barcha metodlar sinf ichida noyob nomga ega bo'lishi kerak.
— Ha, men bu haqida bilaman.
— Aslini olganda, bu unchalik to'g'ri emas. Aniqrog'i umuman to'g'ri emas. Metod noyob nomga ega bo'lishi shart emas. Noyob bo'lishi kerak metodning nomi va parametr turlari birlashmasi. Ularni hali metodlarning imzolari deb atashadi.
Kod | Tavsif |
---|---|
|
Shunday mumkin. Ikki metod noyob nomlarga ega. |
|
Va shunday ham mumkin. Ikki metod noyob nomlarga ega (imzolar). |
|
Hali ham noyob metodlar. |
|
Va shunday qilib bo’lmaydi. Metodlar noyob emas, garchi turli turdagi qiymatlarni qaytarsalar ham. |
|
Va shunday – mumkin. Metod parametrlar noyob. |
— Qayerdadir bunday narsani ko’rganman.
— Ha. System.out.println yozganingizda, IntelliJ IDEA sizga turli parametrlar bilan o'nlab print metodlarini taklif qilib beradi. Kompilyator siz kiritgan o'zgaruvchilarga mos holda kerakli metodni aniqlaydi va aynan unga murojaat qiladi.
— Bu qiyin emas shekilli. Polimorfizm emas, lekin.
— Aniqrog'i — metodlarni qayta aniqlash emas
Aytmoqchimanki, parametrlar nomlari ahamiyatga ega emas – ularni kompilyatsiya qilish vaqtida yo'qotadi. Kompilyatsiyadan keyin metod haqida faqat uning nomi va parametr turlari ma'lum bo'ladi.
GO TO FULL VERSION