MODUL 2 LESSON 3
Asrorbek1.Inheritance nima?
Inheritance (meros olish) — bu Java'dagi Object-Oriented Programming (OOP) konseptlaridan biri bo‘lib, bir class boshqa classning xususiyatlari (fields) va xatti-harakatlarini (methods) meros qilib olishi imkonini beradi. Bu kodning qayta ishlatilishi va modullashtirilishi uchun muhim.
2.Inheritance nima uchun kerak?
✅ Kodning qayta ishlatilishini ta’minlaydi – Bir class yaratib, undan boshqa classlar foydalanishi mumkin.
✅ Modular va tartibli kod yozish imkonini beradi – Katta dasturlarni kichik va tartibli bo‘lishiga yordam beradi.
✅ Polymorphism va Dynamic Method Dispatch kabi OOP xususiyatlaridan foydalanish imkonini beradi.
3.Inheritance turlari va misollar
Java'da inheritance'ning quyidagi turlari mavjud:
1️⃣ Single Inheritance (Yagona meros olish)
Bitta class boshqa bitta class'dan meros oladi.
📌 Misol:
class Animal {
void eat() {
System.out.println("Eating...");
}
}
class Dog extends Animal {
void bark() {
System.out.println("Barking...");
}
}
public class Main {
public static void main(String args[]) {
Dog d = new Dog();
d.eat(); // Superclass method
d.bark(); // Subclass method
}
}
2️⃣ Multi-Level Inheritance (Ko‘p bosqichli meros olish)
Bitta class boshqa class'dan, u esa boshqa bir class'dan meros oladi.
📌 Misol:
class Animal {
void eat() {
System.out.println("Eating...");
}
}
class Dog extends Animal {
void bark() {
System.out.println("Barking...");
}
}
class Puppy extends Dog {
void weep() {
System.out.println("Weeping...");
}
}
public class Main {
public static void main(String args[]) {
Puppy p = new Puppy();
p.eat(); // Superclass method
p.bark(); // Parent class method
p.weep(); // Own method
}
}
3️⃣ Hierarchical Inheritance (Ierarxik meros olish)
Bitta superclass bir nechta subclass'lar tomonidan meros olinadi.
📌 Misol:
class Animal {
void eat() {
System.out.println("Eating...");
}
}
class Dog extends Animal {
void bark() {
System.out.println("Barking...");
}
}
class Cat extends Animal {
void meow() {
System.out.println("Meowing...");
}
}
public class Main {
public static void main(String args[]) {
Dog d = new Dog();
d.eat();
d.bark();
Cat c = new Cat();
c.eat();
c.meow();
}
}
4️⃣ Multiple Inheritance (Ko‘p martalik meros olish)
Java'da class'lar multiple inheritance qo‘llab-quvvatlanmaydi (ya’ni, bitta class bir nechta class'ni meros qilib ololmaydi). Lekin, interface'lar orqali amalga oshirish mumkin.
📌 Misol:
interface A {
void showA();
}
interface B {
void showB();
}
class C implements A, B {
public void showA() {
System.out.println("A method");
}
public void showB() {
System.out.println("B method");
}
}
public class Main {
public static void main(String args[]) {
C obj = new C();
obj.showA();
obj.showB();
}
}
4. Javada bir nechta inheritance ishlatish mumkinmi?
Yo‘q, Java multiple inheritance ni qo‘llab-quvvatlamaydi. Buning sababi "diamond problem" ni oldini olishdir. Biroq, interface'lar orqali amalga oshirish mumkin.
5. Superclass va Subclass nima?
✅ Superclass — boshqa class'lar undan meros oladigan class (ota class).
✅ Subclass — boshqa class'dan meros oladigan class (farzand class).
📌 Misol:
class Parent {
void display() {
System.out.println("This is parent class");
}
}
class Child extends Parent {
void show() {
System.out.println("This is child class");
}
}
public class Main {
public static void main(String args[]) {
Child obj = new Child();
obj.display();
obj.show();
}
}
6.Subclass superclass'dan nimalarni meros qilib oladi?
✅ Public va Protected field va methodlar
❌ Private field va methodlar meros olinmaydi
✅ Static methodlar ham inheritance qoidalariga bo‘ysunadi
7. Cosmic class nima?
Java'dagi Object class cosmic class hisoblanadi, chunki barcha class'lar avtomatik ravishda undan meros oladi.
📌 Misol:
class A {
void show() {
System.out.println("Hello from A");
}
}
public class Main {
public static void main(String args[]) {
A obj = new A();
System.out.println(obj.toString()); // Object class'dan meros olingan method
}
}
8. Cosmic class qanday methodlarga ega?
Object class quyidagi methodlarga ega:
✅ toString() – Object'ni string ko‘rinishga o‘tkazadi.
✅ equals(Object obj) – Ikkita object tengligini tekshiradi.
✅ hashCode() – Object'ning hash kodini qaytaradi.
✅ getClass() – Object class'ini qaytaradi.
✅ clone() – Object'ning nusxasini yaratadi.
✅ finalize() – Garbage Collector chaqirganda ishlaydi.
✅ wait(), notify(), notifyAll() – Multithreading uchun ishlatiladi.
1.Access modifierlar nima uchun kerak?
Access modifiers class'lar, methodlar, fieldlar (o‘zgaruvchilar) va constructor'lar uchun ko‘rinish darajasini belgilaydi. Ular ma’lumotlarning inkapsulyatsiyasini (encapsulation) ta’minlaydi va obyektga yo‘naltirilgan dasturlashda xavfsizlikni oshiradi.
2. Access Modifier'larning turlari va ta'riflari

3. private Constructor yaratish mumkinmi?
✅ Ha, yaratish mumkin!
private constructor obyekt yaratishni cheklaydi va faqat o‘sha class ichida ishlatilishi mumkin.
Ko‘pincha Singleton Pattern yoki static factory method lar uchun ishlatiladi.
📌 Misol: Singleton Pattern
class Singleton {
private static Singleton instance;
private Singleton() { // Private constructor
System.out.println("Singleton obyekt yaratildi!");
}
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
public class Main {
public static void main(String[] args) {
Singleton obj1 = Singleton.getInstance();
Singleton obj2 = Singleton.getInstance();
// Ikki marta chaqirsak ham bitta obyekt yaratiladi!
}
}
4. Qaysi access modifier'larni class'lar bilan ishlata olamiz?

⛔ private va protected class'lar uchun ishlatilmaydi.
✅ Barcha class'lar public yoki default bo‘lishi mumkin.
5. SuperClass'ning protected constructoridan foydalana olamizmi?
✅ Ha, lekin faqat subclass ichida.
Agar constructor protected bo‘lsa, subclass undan foydalanishi mumkin.
📌 Misol:
class Parent {
protected Parent() { // Protected constructor
System.out.println("Protected constructor ishladi!");
}
}
class Child extends Parent {
public Child() {
super(); // Parent class constructorini chaqirish
}
}
public class Main {
public static void main(String args[]) {
Child obj = new Child(); // Superclass protected constructor ishlaydi!
}
}
6. private modifier nimalarda ishlatiladi va qayerlarga ruxsat beradi?
✅ Field (o‘zgaruvchilar)
✅ Methodlar
✅ Constructorlar
❌ Class uchun ishlatilmaydi (faqat ichki class'lar uchun ishlatilishi mumkin).
private ishlatish qoidalari
- Faqat o‘sha class ichida ishlaydi.
- Tashqaridan chaqirib bo‘lmaydi.
- Encapsulation va Singleton Pattern uchun foydali.
📌 Misol:
class Example {
private int data = 100; // Faqat shu class ichida foydalanish mumkin
private void display() {
System.out.println("Private method ishladi");
}
public void show() {
display(); // Faqat shu class ichida chaqirish mumkin
}
}
1. Classlar orasida qanday relationshiplar bor?
OOP’da 3 asosiy munosabat turi mavjud:

2. Uses-A (foydalanadi) munosabati
Bu bir class boshqa class obyektini vaqtincha ishlatganda ishlatiladi. Ko‘pincha method ichida obyekt yaratiladi.
📌 Misol:
class Engine {
void start() {
System.out.println("Engine started");
}
}
class Car {
void drive() {
Engine e = new Engine(); // uses-a
e.start();
System.out.println("Car is driving");
}
}
3. Has-A (ega) munosabati
Bu kompozitsiya yoki agregatsiya orqali amalga oshadi. Bunda bitta class boshqa classning obyektini field sifatida saqlaydi.
📌 Has-A munosabatlarining ikki turi mavjud:
▶️ a. Aggregation (Bo‘linadigan bog‘lanish)
- Obyektlar o‘zaro bog‘langan, lekin mustaqil.
- Bir class ikkinchisining obyektiga ega, lekin u obyekt mustaqil yashay oladi.
class Department {}
class University {
Department dept; // aggregation
}
▶️ b. Composition (Ajralmas bog‘lanish)
- Bir class boshqa classni o‘z ichiga oladi va uni o‘zi boshqaradi.
- Obyekti class bilan birga yo‘q bo‘ladi (ya'ni, tightly bound).
class Heart {}
class Human {
private Heart heart = new Heart(); // composition
}
4. Is-A (bu — ...) munosabati
Bu inheritance orqali amalga oshadi. Child class Parent classning barcha xususiyatlariga ega bo‘ladi.
📌 Is-A munosabatga erishish uchun ishlatiladigan keyword:
extends— classlar uchunimplements— interfeyslar uchun
📌 Misol:
class Animal {}
class Dog extends Animal {
// Dog is-a Animal
}
5. Is-A va Has-A farqlari

6. Composition, Aggregation, Association farqlari

📌 Misollar:
- Association: Student ↔ Teacher (ikki tomonlama aloqa, mustaqil)
- Aggregation: Department → Professor (Professor universitetdan mustaqil)
- Composition: House → Room (Room uy bilan birga mavjud)