MODUL 2 LESSON 5

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:

  1. abstract class orqali – partial abstraction
  2. interface orqali – full abstraction

🔹 Concrete class qanday class?

Concrete class – bu to‘liq implementatsiyaga ega bo‘lgan class. Ya’ni:

  • abstract emas
  • Uning ichidagi barcha methodlar aniqlangan bo‘ladi
  • Undan object yaratish mumkin

🔹 Concrete class va Abstract class farqlari:


🔹 Abstract classning qoidalari nima?

  1. abstract kalit so‘zi bilan e’lon qilinadi.
  2. Ichida abstract method bo‘lishi shart emas, lekin bo‘lishi mumkin.
  3. Undan to‘g‘ridan-to‘g‘ri object yaratib bo‘lmaydi.
  4. Abstract class constructorga ega bo‘lishi mumkin.
  5. Subclasslar abstract methodlarni override qilishi shart.

🔹 Abstract methodning qoidalari nima?

  1. abstract deb e’lon qilinadi, tana (body) bo‘lmaydi.
abstract void draw();
  1. Faqat abstract class ichida e’lon qilinadi.
  2. Subclass uni override qilishi majburiy.

🔹 Abstractionning afzalliklari nima?

  • Complexlikni kamaytiradi – foydalanuvchi uchun faqat kerakli interfeys ko‘rsatiladi.
  • Code reusable – bir nechta classlar bir xil abstract classdan 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.

  • static method classga tegishli.
  • abstract method 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.

  • abstract classda 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?

  1. Faqat abstrakt methodlar (Java 8 dan default va static methodlar qo‘shilgan).
  2. Barcha fieldlar:
  3. public static final (ya’ni konstantalar)
  4. Barcha methodlar default holda:
  5. public abstract
  6. Constructor bo‘lmaydi.
  7. interface orqali multiple inheritance mumkin.

🔹 Interfacening qoidalari qanday?

  1. Barcha methodlar public abstract bo‘ladi (hatto yozilmasa ham).
  2. Barcha o‘zgaruvchilar public static final.
  3. Interface ichida:
  4. abstract, default, static, private (Java 9+) methodlar bo‘lishi mumkin.
  5. Interface boshqa interfeysni extends qilishi mumkin.
  6. Class interface'ni implements orqali 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, ObjectOutputStream faqat Serializable bo‘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

Report Page