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

Mashqlar

Teglar: nazariya, modul-02, pdp

Interaktiv ko'rinish (viktorina, izohlar, tarix)