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):