2-modul · 5-dars: Abstraction · Interface · Marker
Daraja: O'rta
Abstraction · Interface · Marker. OOP bo‘yicha nazariya, amaliy namuna va mustaqil mashq.
Tushuntirish
## Dars maqsadi Abstraction · Interface · Marker tushunchalarini farqlash, nima uchun kerakligini izohlash va kichik misolda qo‘llash.
## Nazariya Faqat muhim narsani (nima qilishini) ko'rsatib, ichki tafsilotlarni (qanday qilishini) yashirish.
`abstract` class va `interface` orqali.
## Intervyuga tayyorgarlik ### Abstraction nima? Faqat muhim narsani (nima qilishini) ko'rsatib, ichki tafsilotlarni (qanday qilishini) yashirish.
### Abstractionga qanday erishiladi? `abstract` class va `interface` orqali.
### Concrete class qanday class? Barcha methodlari to'liq amalga oshirilgan, obyekt yaratsa bo'ladigan oddiy class.
### Concrete class va Abstract class farqlari? Concrete — hamma method to'liq, obyekt yaratiladi. Abstract — abstract method bo'lishi mumkin, undan bevosita obyekt yaratilmaydi.
### Abstract class-ning qoidalari nima? `abstract` bilan belgilanadi; obyekt yaratilmaydi; abstract va concrete methodlar bo'lishi mumkin; constructor bor.
### Abstract method-ning qoidalari nima? Tanasiz (faqat imzo); faqat abstract class yoki interface ichida bo'ladi; subclass uni override qilishi shart.
### Abstraction-ning afzalliklari nima? Murakkablikni yashiradi, umumiy shartnoma (contract) beradi, moslashuvchanlik va oson kengaytirishni ta'minlaydi.
### Abstract methodlar static bo'la oladimi? Yo'q. Static method override bo'lmaydi, abstract esa aynan override talab qiladi.
### Abstract classdan obyekt yarata olamizmi? Yo'q, undan bevosita obyekt yaratib bo'lmaydi (faqat subclass orqali).
### Abstract class-ning constructori bormi? Ha, bor. Subclass uni `super()` orqali chaqiradi.
### Interface nima? To'liq abstract shartnoma — method imzolari (va default/static/constant) to'plami.
### Interface nima uchun kerak? Multiple inheritance (type), past bog'liqlik (loose coupling) va umumiy shartnoma belgilash uchun.
### Interface-ning xususiyatlari qanday? Methodlar default `public abstract`; field lar `public static final`. Java 8 dan `default`/`static`, Java 9 dan `private` methodlar mumkin.
### Interface-ning qoidalari qanday? Obyekt yaratilmaydi; class uni `implements` qiladi; barcha abstract methodlar amalga oshirilishi kerak.
### Access modifierlarning qaysi turlarini interface methodlarida ishlata olamiz? `public` (default). Java 9 dan `private` va `static` ham. `protected` bo'lmaydi.
### Interface-larning obyektlarini yarata olamizmi? To'g'ridan yo'q. Lekin uni reference sifatida ishlatib, anonymous class yoki lambda orqali amalga oshiramiz.
### Interface-da static method yarata olamizmi? Ha, Java 8 dan interface da static method yozish mumkin.
### Interface bir necha voris olishni qo'llab-quvvatlaydimi? Ha. Interface bir nechta interfeys dan `extends` orqali meros oladi.
### Abstract class va Interface farqlari? Abstract class: constructor va holat (field) bor, single inheritance, har xil access modifier. Interface: constructor yo'q, faqat constant, multiple inheritance, methodlar public. Abstract — qisman implementatsiya, interface — sof shartnoma.
### Marker interface qanday interface? Hech qanday method-ga ega bo'lmagan (bo'sh) interface — class ga «belgi/marker» beradi.
### Marker interface-ga misollar keltiring. `Serializable`, `Cloneable`, `Remote`.
### Marker interface bo'sh bo'lsa, nima uchun kerak? JVM yoki kutubxonaga class haqida metama'lumot beradi (masalan `Serializable` — obyektni serialize qilish mumkinligini bildiradi). Hozir ko'proq annotatsiya ishlatiladi.
## 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
interface Shape { double area(); }
record Square(double side) implements Shape {
public double area() { return side * side; }
}
Keng tarqalgan xatolar
- Abstract class va interface ni bir xil deb tanlash: class dan bitta, interface dan bir nechta meros olinadi.
- Interface ga holat (o'zgaruvchan maydon) qo'yishga urinish - undagi maydonlar doim `public static final`.
Mashqlar
- Bitta abstract class va bitta interface yozib, ikkalasidan foydalanuvchi class yarating.
- Abstract class ga constructor qo'shib, u qachon chaqirilishini chop etib ko'rsating.
Teglar: nazariya, modul-02, pdp