Sobes.tech
Junior — Middle

Java'da statik va dinamik metod bog'lanishi qanday farq qiladi va ularning xususiyatlari qanday?

sobes.tech AI

AIdan javob

Java'da, statik va dinamik metod bog'lanishi, chaqiriq uchun aniq metodni tanlash qachon bo'lishiga qarab farq qiladi.

  • Statik bog'lanish (static binding) kompilatsiya vaqtida yuzaga keladi. Bu statik metodlar, xususiy metodlar va final metodlar chaqiriqlarini o'z ichiga oladi. Kompilyator qaysi metodni chaqirishni biladi va chaqiruvni aniq bir amalga oshirish bilan bog'laydi.

  • Dinamik bog'lanish (dynamic binding) dastur bajarilayotganda yuzaga keladi. Bu virtual metodlar (oddiy instans metodlari) uchun xos bo'lib, ular subklasslarda qayta yozilishi mumkin. JVM bajarilish vaqtida, ob'ektning haqiqiy turiga asoslanib, qaysi metodni chaqirishni aniqlaydi.

Misol:

class Animal {
    void sound() {
        System.out.println("Ba'zi ovozlar");
    }
    static void staticMethod() {
        System.out.println("Animal'dagi statik metod");
    }
}

class Dog extends Animal {
    @Override
    void sound() {
        System.out.println("Hovuch");
    }
    static void staticMethod() {
        System.out.println("Dog'dagi statik metod");
    }
}

public class Test {
    public static void main(String[] args) {
        Animal a = new Dog();
        a.sound(); // dinamik bog'lanish, Dog.sound() chaqiriladi
        a.staticMethod(); // statik bog'lanish, Animal.staticMethod() chaqiriladi
    }
}

Xulosa qilib aytganda, dinamik bog'lanish polimorfizmni ta'minlaydi, statik bog'lanish esa qayta yozilmaydigan metodlar uchun tezroq va oldindan aytib bo'ladigan ishlashni ta'minlaydi.