Sobes.tech
Middle

Java'da statik metodlarni qayta yozish mumkinmi?

sobes.tech AI

AIdan javob

Java'da statik metodlarni qayta yozib bo'lmaydi. Statik metodlar sinfga tegishli bo'lib, aniq bir ob'ekt nusxasiga emas. Agar meros olish jarayonida, superklassdagi statik metod bilan imzosi bir xil bo'lgan statik metod meros olinsa, bu qayta yozish emas; bu yashirish (method hiding) deb ataladi. Statik metod chaqiruvi har doim referens turiga qarab aniqlanadi, ob'ekt turiga emas.

class Parent {
    public static void staticMethod() {
        System.out.println("Parent'dagi statik metod");
    }
}

class Child extends Parent {
    // Bu qayta yozish emas, yashirish
    public static void staticMethod() {
        System.out.println("Child'dagi statik metod");
    }
}

public class Main {
    public static void main(String[] args) {
        Parent.staticMethod(); // Parent'dagi statik metodni chaqiradi
        Child.staticMethod();  // Child'dagi statik metodni chaqiradi

        Parent p = new Child();
        // Referens tur Parent bo'lgani uchun Parent'dagi statik metod chaqiriladi
        p.staticMethod();
    }
}

Ushbu misolda, p o'zgaruvchisi Child ob'ektiga murojaat qilsa ham, p.staticMethod() chaqiruvi Parent sinfining statik metodini chaqiradi. Bu statik metodlar, yozib olish bilan xarakterlangan bajarilish polimorfizmi (runtime polymorphism)da qatnashmasligini ko'rsatadi.