Javaда статикалык жана динамикалык ыкмаларды байлоо кандай айырмаланат жана алардын өзгөчөлүктөрү кандай?
sobes.tech AI
AIден жооп
Javaда, статик жана динамик методдорду байлоо, кайсы учурда конкреттүү методдун ишке ашуусу тандалганын аныктоо убактысы менен айырмаланат.
-
Статик байлоо (static binding) программаны компиляциялоо учурунда болот. Бул статикалык методдорго, жеке методдорго жана финалдык методдорго тиешелүү. Компилятор кайсы методду чакырыш керектигин билет жана чакырууну конкреттүү ишке ашыруу менен байланыштырат.
-
Динамик байлоо (dynamic binding) программаны иштетүү учурунда болот. Бул виртуалдык методдорго (жалпы мисал методдор) мүнөздүү жана аларды подклассларда кайра жазууга болот. JVM иштөө учурунда, объекттин чыныгы түрүнө негизделип, кайсы методду чакырыш керектигин аныктайт.
Мисал:
class Animal {
void sound() {
System.out.println("Кээ бир үн");
}
static void staticMethod() {
System.out.println("Animalдеги статикалык метод");
}
}
class Dog extends Animal {
@Override
void sound() {
System.out.println("Чычылдаган");
}
static void staticMethod() {
System.out.println("Dogдогу статикалык метод");
}
}
public class Test {
public static void main(String[] args) {
Animal a = new Dog();
a.sound(); // динамикалык байлоо, Dog.sound() чакырылат
a.staticMethod(); // статикалык байлоо, Animal.staticMethod() чакырылат
}
}
Жыйынтыктап айтканда, динамикалык байлоо полиморфизмди камсыздайт, ал эми статикалык байлоо тезирээк жана алдын ала белгилүү иштөө үчүн ылайыктуу, ал кайра жазылбайт.