2-modul · 4-dars: Polymorphism · Overloading · Overriding
Daraja: O'rta
Polymorphism · Overloading · Overriding. OOP bo‘yicha nazariya, amaliy namuna va mustaqil mashq.
Tushuntirish
## Dars maqsadi Polymorphism · Overloading · Overriding tushunchalarini farqlash, nima uchun kerakligini izohlash va kichik misolda qo‘llash.
## Nazariya Bir interfeys yoki nom ko'p shaklda ishlashi — bitta method turli obyektlarda turlicha bajarilishi.
Static (compile-time, overloading) va Dynamic (runtime, overriding).
## Intervyuga tayyorgarlik ### Polymorphism nima? Bir interfeys yoki nom ko'p shaklda ishlashi — bitta method turli obyektlarda turlicha bajarilishi.
### Polymorphism-ning turlari? Static (compile-time, overloading) va Dynamic (runtime, overriding).
### Static Polymorphism nima? Compile vaqtida hal bo'ladigan polimorfizm — method overloading.
### Dynamic Polymorphism nima? Runtime da, obyekt turiga qarab hal bo'ladigan polimorfizm — method overriding (upcasting orqali).
### Polymorphism va Inheritance-ni farqi? Inheritance — meros olish mexanizmi. Polymorphism — bir nomning turli shaklda ishlashi (ko'pincha meros ustiga quriladi).
### Polymorphism-ning foydali taraflari nima? Moslashuvchanlik, kengaytiriladigan kod va umumiy interfeys orqali turli obyektlar bilan ishlash imkoni.
### Overloading nima? Bir xil nomli, lekin turli parametrli methodlar yaratish.
### Overload method-ning qoidalari? Nomi bir xil; parametrlar soni, turi yoki tartibi farq qilishi shart. Faqat return type farqi yetarli emas.
### Static methodlarni overload qilolamizmi? Ha, static methodlarni overload qilsa bo'ladi.
### Bir xil signature va har xil return type ga ega methodlar yarata olamizmi? Yo'q — compile error beradi, chunki return type signature ga kirmaydi.
### Overloading Dynamic binding ga misol bo'la oladimi? Yo'q. Overloading — static (compile-time) binding ga misol.
### Overriding nima? Subclass superclass dagi method-ni bir xil signature bilan qayta yozishi.
### Override method-ining qoidalari? Bir xil nom, parametr va return type (yoki covariant); access modifier torroq bo'lmasligi; `static`/`final`/`private` override bo'lmaydi; `@Override` yozish tavsiya etiladi.
### Override qilingan method-ning signature-ini o'zgartira olamizmi? Yo'q. Override da signature bir xil bo'lishi shart — aks holda bu overloading bo'lib qoladi.
### Class fieldlari override bo'ladimi? Yo'q. Field lar override emas — ular shadow/hide bo'ladi va reference turiga qarab hal bo'ladi.
### Binding nima? Method chaqiruvini uning ta'rifi (implementatsiyasi) bilan bog'lash.
### Static Binding nima? Compile vaqtida amalga oshadigan bog'lanish (static, final, private methodlar va overloading).
### Dynamic Binding nima? Runtime da, haqiqiy obyekt turiga qarab amalga oshadigan bog'lanish (overriding).
### Static methodlarni override qila olamizmi? Yo'q. Bu method hiding deyiladi, override emas.
### Final methodlarni override qila olamizmi? Yo'q. `final` method override qilinmaydi.
### Private methodlarni override qila olamizmi? Yo'q. `private` method subclass ga ko'rinmaydi.
### Protected methodni override qilib boshqa access modifier bilan e'lon qila olamizmi? Faqat kengroq qilish mumkin (`protected` → `public`). Torroq (`private`) qilib bo'lmaydi.
## Versiya va aniqlik Java misollari Java 17 bazasiga mo‘ljallangan. JDK/JRE paketlash usuli distributivga bog‘liq; JVM bayt-kodni interpretatsiya va JIT orqali bajarishi mumkin. GC uchun aniq bajarilish vaqtiga kafolat yo‘q; finalization resurs yopish usuli emas. Thread stop/suspend/resume kabi eski metodlar amaliy yechim emas. Koddagi import, klass yoki tashqi kutubxona kontekstini tekshiring.
## Manbalar [Moduldagi savollar yo‘nalishi](https://github.com/jlkesh/pdp_online_java_lessons/blob/main/interviewquestions/2-module.md) [Rasmiy qo‘llanma](https://dev.java/learn/classes-objects/) [Sizning avvalgi savol-javob arxivingiz](https://lightyer.uz/java/interview.html)
Kod quyida o‘quv namunasi sifatida berilgan. To‘liq ilova uchun import, dependency va konfiguratsiya kerak bo‘lishi mumkin. SQLni faqat ajratilgan test bazasida bajaring.
Kod misoli
class Printer {
void print(int value) { System.out.println(value); }
void print(String value) { System.out.println(value); }
}
// Overload compile vaqtidagi parametr turlari orqali tanlanadi.
Keng tarqalgan xatolar
- Overriding da metod nomini xato yozib, aslida overload qilib qo'yish - `@Override` shuni tutadi.
- Static metodni override qilish mumkin deb o'ylash: u yashiriladi (hiding), dinamik tanlanmaydi.
Mashqlar
- Superclass havolasiga subclass obyektini berib, qaysi metod ishlashini oldindan ayting.
- `@Override` ni ataylab noto'g'ri metodga qo'yib, kompilyator xabarini o'qing.
Teglar: pdp, nazariya, modul-02