2-modul · 8-dars: Non-Access Modifiers · Record · Sealed · Blocks
Daraja: O'rta
Non-Access Modifiers · Record · Sealed · Blocks. OOP bo‘yicha nazariya, amaliy namuna va mustaqil mashq.
Tushuntirish
## Dars maqsadi Non-Access Modifiers · Record · Sealed · Blocks tushunchalarini farqlash, nima uchun kerakligini izohlash va kichik misolda qo‘llash.
## Nazariya `static`, `final`, `abstract`, `synchronized`, `transient`, `volatile`, `native`, `strictfp`.
static — class-level a'zo; final — o'zgarmas/meros bermas; abstract — to'liqsiz; synchronized — thread sinxronizatsiyasi; transient — serializatsiyada tashlab ketiladi; volatile — thread lararo ko'rinish; native — native kod; strictfp — float aniqligi.
## Intervyuga tayyorgarlik ### Non-access modifiers turlari? `static`, `final`, `abstract`, `synchronized`, `transient`, `volatile`, `native`, `strictfp`.
### Har bir non-access modifier qayerlarda ishlatiladi? static — class-level a'zo; final — o'zgarmas/meros bermas; abstract — to'liqsiz; synchronized — thread sinxronizatsiyasi; transient — serializatsiyada tashlab ketiladi; volatile — thread lararo ko'rinish; native — native kod; strictfp — float aniqligi.
### Record classlar qanday classlar? Faqat ma'lumot saqlash uchun mo'ljallangan immutable, qisqa class lar. Field, constructor, getter, `equals`/`hashCode`/`toString` avtomatik yaratiladi. Java 16 dan.
### Record Class-ning qanday constructorlari bor? Canonical (to'liq), Compact (qisqartirilgan, validatsiya uchun) va custom constructor.
### Sealed Classlar qanday classlar? Qaysi class lar undan meros olishini `permits` bilan cheklaydigan class lar. Java 17 dan.
### Sealed Classlar nima uchun kerak? Meros ierarxiyasini nazorat qilish, xavfsizlik va aniq domen modellash uchun.
### Instance Initializer Block nima uchun kerak? Har bir obyekt yaratilishida field larni initsializatsiya qilish uchun (constructorlar uchun umumiy kod).
### Instance Initializer Block qachon ishlaydi? Har bir obyekt yaratilganda, constructor tanasidan oldin.
### Static block qachon ishlaydi? Class birinchi marta yuklanganda, faqat bir marta.
### Static va Instance Initializer block farqlari? Static block class yuklanganda 1 marta ishlaydi; instance block esa har bir obyekt yaratilishida ishlaydi.
### Variable Shadowing nima? Ichki scope (method yoki parametr) o'zgaruvchisi bir xil nomdagi tashqi (field) o'zgaruvchini «soyalab», uni yashirishi.
### Variable hiding nima? Subclass dagi static a'zo yoki field superclass-nikini yashirishi (reference turiga qarab hal bo'ladi).
## 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
sealed interface Result permits Success, Failure {}
record Success(String value) implements Result {}
record Failure(String message) implements Result {}
// Java 17; record fieldlari final, ichidagi mutable obyekt esa avtomatik immutable emas.
Keng tarqalgan xatolar
- `record` ni oddiy class kabi o'zgartirmoqchi bo'lish: uning maydonlari `final`.
- Static block da og'ir ish qilish - u class yuklanishini sekinlashtiradi va xato bo'lsa ilova ko'tarilmaydi.
Mashqlar
- Bir xil ma'lumot tashuvchini oddiy class va `record` bilan yozib, kod hajmini solishtiring.
- Static va instance initializer block li class yozib, chaqiruvlar tartibini chop eting.
Teglar: pdp, nazariya, modul-02