Sobes.tech
Junior — Middle

Чӣ гуна методҳои статикӣ дар барномасозии объектӣ-баҳсшаванда аз методҳое, ки дар синфҳои фарзандӣ иваз мешаванд, фарқ мекунанд?

sobes.tech AI

Ҷавоб аз AI

Дарсҳои статикӣ дар Java ба худи синф тааллуқ доранд, на ба намунаҳо. Онҳо тавассути номи синф даъват карда мешаванд ва дар синфҳои фарзандӣ дубора навиштан мумкин нестанд, зеро онҳо дар полиморфизм иштирок намекунанд.

Баръакс, методҳое, ки метавонанд дубора навишт шаванд (нестатикӣ), ба объектҳо тааллуқ доранд ва полиморфизми динамикро дастгирӣ мекунанд. Вақте ки як метод тавассути истинод ба синфи асосӣ даъват карда мешавад, татбиқи воқеӣ аз навъи объект дар вақти иҷро муайян карда мешавад.

Масалан:

class Parent {
    static void staticMethod() {
        System.out.println("Методи статикӣ дар Parent");
    }
    void instanceMethod() {
        System.out.println("Методи намуна дар Parent");
    }
}

class Child extends Parent {
    static void staticMethod() {
        System.out.println("Методи статикӣ дар Child");
    }
    @Override
    void instanceMethod() {
        System.out.println("Методи намуна дар Child");
    }
}

public class Test {
    public static void main(String[] args) {
        Parent p = new Child();
        p.staticMethod();      // Баромад: Методи статикӣ дар Parent
        p.instanceMethod();    // Баромад: Методи намуна дар Child
    }
}

Ин ҷо, методи статикӣ ба асоси навъи истинод (Parent) даъват мешавад, ва методи ғайристатикӣ — ба навъи объект (Child).