MODUL 2 LESSON 5
Asrorbek🔹 Abstraction nima?
Abstraction — bu dasturlashda kerakli ma’lumotlarni ajratib olish va keraksiz tafsilotlarni yashirish degani.
🧠 Oddiy qilib aytganda: "Nimani qilish kerak" ko‘rsatamiz, "Qanday qilib" bajarilishini yashiramiz.
🔹 Abstractionga qanday erishiladi?
Java’da abstraction ga 2 yo‘l bilan erishamiz:
abstractclass orqali – partial abstractioninterfaceorqali – full abstraction
🔹 Concrete class qanday class?
Concrete class – bu to‘liq implementatsiyaga ega bo‘lgan class. Ya’ni:
abstractemas- Uning ichidagi barcha methodlar aniqlangan bo‘ladi
- Undan object yaratish mumkin
🔹 Concrete class va Abstract class farqlari:

🔹 Abstract classning qoidalari nima?
abstractkalit so‘zi bilan e’lon qilinadi.- Ichida
abstractmethod bo‘lishi shart emas, lekin bo‘lishi mumkin. - Undan to‘g‘ridan-to‘g‘ri object yaratib bo‘lmaydi.
- Abstract class constructorga ega bo‘lishi mumkin.
- Subclasslar abstract methodlarni override qilishi shart.
🔹 Abstract methodning qoidalari nima?
abstractdeb e’lon qilinadi, tana (body) bo‘lmaydi.
abstract void draw();
- Faqat
abstractclass ichida e’lon qilinadi. - Subclass uni override qilishi majburiy.
🔹 Abstractionning afzalliklari nima?
- Complexlikni kamaytiradi – foydalanuvchi uchun faqat kerakli interfeys ko‘rsatiladi.
- Code reusable – bir nechta classlar bir xil
abstractclassdan foydalanishi mumkin. - Security – kerakli ma’lumotlar ochiq, qolganlari yashirin.
- Maintenance – kodni o‘zgartirish yoki kengaytirish oson.
🔹 Abstract method static bo‘la oladimi?
❌ Yo‘q, bo‘la olmaydi.
staticmethod classga tegishli.abstractmethod esa override qilinishi kerak, bu esa objectga bog‘liq.- Ular bir-biriga zid.
🔹 Abstract classdan object yarata olamizmi?
❌ Yo‘q, abstract classdan object yarata olmaymiz.
- Lekin reference sifatida ishlatish mumkin.
Shape s = new Circle(); // bu mumkin
🔹 Abstract classning constructori bormi?
✅ Ha, bor.
abstractclassda constructor bo‘ladi.- U subclass object yaratilganda chaqiriladi (inheritance orqali).
abstract class Animal {
Animal() {
System.out.println("Animal constructor");
}
}
🔹 Interface nima?
Interface — bu faqat method imzolarini (signatures) va konstantalarni o‘zida saqlaydigan, hech qanday implementatsiya (body) bo‘lmaydigan reference type.
🧠 Oddiy qilib: Interface — "Nima qilish kerak" ni aytadi, lekin "Qanday qilish kerak" ni aytmaydi.
🔹 Interface nima uchun kerak?
- Multiple Inheritance (ko‘p ota-class) ni qo‘llab-quvvatlash uchun.
- Har xil classlar uchun umumiy xulq-atvor (behavior) belgilash uchun.
- Loyihada loosely coupled design yaratish uchun.
- Polymorphism va abstraction ga erishish uchun.
🔹 Interfacening xususiyatlari qanday?
- Faqat abstrakt methodlar (Java 8 dan
defaultvastaticmethodlar qo‘shilgan). - Barcha fieldlar:
public static final(ya’ni konstantalar)- Barcha methodlar default holda:
public abstract- Constructor bo‘lmaydi.
interfaceorqali multiple inheritance mumkin.
🔹 Interfacening qoidalari qanday?
- Barcha methodlar
public abstractbo‘ladi (hatto yozilmasa ham). - Barcha o‘zgaruvchilar
public static final. - Interface ichida:
abstract,default,static,private(Java 9+) methodlar bo‘lishi mumkin.- Interface boshqa interfeysni
extendsqilishi mumkin. - Class interface'ni
implementsorqali meros oladi va methodlarni override qiladi.
🔹 Access modifierlarning qaysilarini interface methodlarida ishlata olamiz?

🔹 Interfacelarning objectlarini yarata olamizmi?
❌ Yo‘q, interface'dan object yaratib bo‘lmaydi.
Lekin u reference type sifatida ishlatiladi:
Animal a = new Dog(); // Dog interface'ni implement qiladi
🔹 Interfaceda static method yarata olamizmi?
✅ Ha, Java 8 dan boshlab static methodlar bo‘lishi mumkin.
interface Utils {
static void printHello() {
System.out.println("Hello");
}
}
🔹 Interface bir necha voris olishni qo'llab-quvvatlaydimi?
✅ Ha, Java’da class bitta classdan meros oladi (extends),
lekin ko‘plab interfeyslarni implement qila oladi:
class MyClass implements Interface1, Interface2 {
// implement all methods
}
Abstract class vs Interface – Asosiy farqlar ?

🔖 Marker Interface nima?
Marker Interface — bu hech qanday method yoki fieldga ega bo‘lmagan, lekin ma’lum bir classga belgi (mark) beruvchi interface hisoblanadi.
Ya’ni, bu interface faqat "men bu qoidaga mosman" deb aytadi, lekin hech qanday funksiya bermaydi.
🔧 Marker Interface’ning vazifasi:
- Java’da Marker interface’lar compiler yoki JVM tomonidan xatti-harakatni o‘zgartirish yoki maxsus xatti-harakatni ruxsat berish uchun ishlatiladi.
- Bu class’ni biror imkoniyatga ega yoki muayyan guruhga tegishli deb belgilaydi.
📌 Marker Interfacelarga misollar:

// Misol: Serializable marker interface'dan foydalanish
import java.io.Serializable;
public class MyData implements Serializable {
private int id;
private String name;
}
❓ "Bo‘sh interface" nima uchun kerak?
Marker interface hech narsa qilmasa ham, u:
- JVM’ga yoki framework’ga signal beradi.
- Shart bo‘lishi mumkin: Masalan,
ObjectOutputStreamfaqatSerializablebo‘lgan classlarni serialize qiladi. - Java Annotationlar kelmasidan oldin bu metadata berish uchun eng yaxshi yechim edi.
📎 Bugungi kunda marker interface o‘rnini nima bosdi?
🔄 Annotations (@interface) – marker interface’larning zamonaviy alternativi bo‘lib, ular ko‘proq ma’lumot va ko‘p imkoniyatlar beradi.
Misol: @Override, @FunctionalInterface, @Deprecated