Java-da statik və dinamik metodların bağlanması necə fərqlənir və onların xüsusiyyətləri nələrdir?
sobes.tech Süni İntellekt
AI-dan cavab
Java-da, statik və dinamik metodların bağlanması, çağırış üçün konkret metodun seçilmə vaxtı ilə fərqlənir.
-
Statik bağlanma (static binding) proqramın tərtib zamanı baş verir. Bu, statik metodlar, xüsusi metodlar və final metodlar üçün keçərlidir. Tərtibçi hansı metodun çağırılacağını bilir və çağırışı konkret həyata keçirilmə ilə bağlayır.
-
Dinamik bağlanma (dynamic binding) isə proqramın icrası zamanı baş verir. Bu, virtual metodlar (adi nümunə metodları) üçün xarakterikdir və alt siniflərdə yenidən yaza bilər. JVM icra zamanı, obyektin faktiki növünə əsaslanaraq, hansı metodun çağırılacağını müəyyən edir.
Nümunə:
class Animal {
void sound() {
System.out.println("Bəzi səs");
}
static void staticMethod() {
System.out.println("Animal-də statik metod");
}
}
class Dog extends Animal {
@Override
void sound() {
System.out.println("Havlama");
}
static void staticMethod() {
System.out.println("Dog-də statik metod");
}
}
public class Test {
public static void main(String[] args) {
Animal a = new Dog();
a.sound(); // dinamik bağlanma, Dog.sound() çağırılır
a.staticMethod(); // statik bağlanma, Animal.staticMethod() çağırılır
}
}
Qısaca, dinamik bağlanma çox formallıq (polimorfizm) təmin edir, statik bağlanma isə yenidən yazıla bilməyən metodlar üçün daha sürətli və əvvəlcədən bilinə bilən işləmə təmin edir.