2-modul · 3-dars: Inheritance · Access · Relationships
Daraja: O'rta
Inheritance · Access · Relationships. OOP bo‘yicha nazariya, amaliy namuna va mustaqil mashq.
Tushuntirish
## Dars maqsadi Inheritance · Access · Relationships tushunchalarini farqlash, nima uchun kerakligini izohlash va kichik misolda qo‘llash.
## Nazariya Bir class (subclass) boshqasidan (superclass) field va methodlarni meros olishi.
Kodni qayta ishlatish (reuse) va Is-A munosabatini ifodalash uchun.
## Intervyuga tayyorgarlik ### Inheritance nima? Bir class (subclass) boshqasidan (superclass) field va methodlarni meros olishi.
### Inheritance nima uchun kerak? Kodni qayta ishlatish (reuse) va Is-A munosabatini ifodalash uchun.
### Inheritance-ning qanaqa turlari bor? Misollar. Single, Multilevel va Hierarchical (class lar uchun). Multiple inheritance faqat interface orqali. Misol: `Dog extends Animal`.
### Java-da bir nechta Inheritance-dan foydalansa bo'ladimi? Class lar bilan yo'q (diamond problem sababli), lekin interface lar orqali mumkin.
### Superclass va subclass qanday classlar? Superclass (parent) — meros beruvchi; subclass (child) — meros oluvchi class.
### Subclass superclassning nimalarini meros qilib oladi? public/protected (va bir package da default) field va methodlarni. `private` a'zolar va constructorlar meros olinmaydi (lekin `super()` bilan chaqiriladi).
### Cosmic class deb qaysi classga aytiladi? Barcha class larning ota-onasi — `java.lang.Object`.
### Cosmic class-ning qanday methodlari bor? `toString()`, `equals()`, `hashCode()`, `getClass()`, `clone()`, `finalize()`, `wait()`, `notify()`, `notifyAll()`.
### Access modifierlar nima uchun kerak? Class a'zolariga qayerdan kirish mumkinligini boshqarish — inkapsulyatsiyani ta'minlash uchun.
### Access modifierning qanday turlari bor? Ta'rif bering. `private` (faqat class ichida), default/package-private (bir package da), `protected` (package + subclasslar), `public` (hamma joyda).
### Private constructor yarata olamizmi? Vazifasi? Ha. Vazifasi — obyekt yaratishni cheklash: Singleton, utility class yoki Factory pattern uchun.
### Access modifierlarning qaysilarini class bilan ishlata olamiz? Top-level class faqat `public` yoki default bo'ladi. Inner/nested class larda esa hammasi (private, protected ham) mumkin.
### SuperClass-ning protected constructoridan foydalana olamizmi? Ha, subclass o'z constructoridan `super()` orqali uni chaqira oladi.
### Private modifier nimalarda ishlatiladi va qayerlarga ruxsat beradi? Field, method, constructor va inner class da ishlatiladi. Faqat o'sha class ichidagina kirishga ruxsat beradi.
### Classlar orasida qanday relationshiplar bor? Is-A (inheritance), Has-A (association: composition/aggregation) va Uses-A (dependency).
### Uses-A munosabat turi qayerda ishlatiladi? Bir class boshqasini vaqtincha ishlatganda — masalan method parametri yoki local o'zgaruvchi sifatida.
### Has-A munosabat turi qayerda ishlatiladi? Bir class boshqa classni field sifatida saqlaganda (masalan `Car` da `Engine`).
### Is-A munosabat turi qayerda ishlatiladi? Inheritance yoki interface implement qilinganda (`Dog is a Animal`).
### Is-A munosabatga erishish uchun qanday keywordlar ishlatiladi? `extends` (class/interface merosi) va `implements` (interface).
### Has-A munosabatning qanday turlari bor? Composition (kuchli, egalik bilan) va Aggregation (bo'sh bog'lanish).
### Composition, Aggregation va Association farqlari? Association — umumiy bog'lanish. Aggregation — «has-a», qismlar butунdan mustaqil yashaydi. Composition — qism butunsiz yashamaydi (kuchli egalik).
## 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 Animal { String sound() { return "?"; } }
class Cat extends Animal {
@Override String sound() { return "miyov"; }
}
// Animal animal = new Cat();
Keng tarqalgan xatolar
- Har munosabatni meros bilan modellashtirish: ko'p hollarda 'has-a' (kompozitsiya) to'g'riroq.
- `protected` ni 'faqat subclass uchun' deb tushunish - u shu package dagi hamma class ga ham ochiq.
Mashqlar
- Uch bosqichli meros zanjiri yasab, constructor lar qaysi tartibda chaqirilishini chop eting.
- Bitta meros munosabatini kompozitsiyaga aylantirib, qaysi biri moslroq ekanini asoslang.
Teglar: pdp, modul-02, nazariya