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

Mashqlar

Teglar: pdp, nazariya, modul-02

Interaktiv ko'rinish (viktorina, izohlar, tarix)