Sobes.tech
Junior

Երբ մեթոդը համարվում է վերաշարադրված (overriding)?

sobes.tech AI

Պատասխան AI-ից

Մեթոդը համարվում է վերագրած, երբ ժառանգական դասում հայտարարվում է մեթոդ, որը ունի նույն սինտաքսը (մեթոդի անունը, պարամետրերի քանակը և տիպերը նույն հերթականությամբ), ինչպես ծնողական դասում։ Բացի այդ՝

  1. Ծնող դասում մեթոդը չի կարող հայտարարվել որպես final (կամ այլ լեզուներում համապատասխան մոդիֆիկատոր), որը խոչընդոտում է վերագրումը։
  2. Վերագրած մեթոդի մուտքի մակարդակը ժառանգական դասում չի կարող լինել ավելի սահմանափակ, քան ծնողական դասում։
  3. Վերագրած մեթոդը կարող է վերադարձնել նույն տիպը, ինչ ծնողական դասում կամ կովարիանտ տիպ (մասին տիպի ենթատիպը)։
  4. Վերագրած մեթոդը չի կարող արտածել ավելի ընդհանուր (կամ անհամատեղելի) արտահայտություններ, քան ծնողական մեթոդում նշված արտահայտությունները։
  5. Ստատիկ մեթոդները չեն կարող վերագրել, միայն թաքցնել (hidden)։

Երբ վերագրած մեթոդը կանչվում է ծնողական դասի հղումով, բայց ժառանգական դասի օբյեկտով, կատարվում է ժառանգական դասի տարբերակը (պոլիմորֆիզմ)։

// Java օրինակ

class Parent {
    public void display() { // Ծնող դասի մեթոդ
        System.out.println("Parent display");
    }

    // final void cannotOverride() { ... } // Այս մեթոդը չի կարող վերագրել
}

class Child extends Parent {
    @Override // @Override նշումը օգնում է կոմպիլյատորին ստուգել, որ մեթոդը իսկապես վերագրում է
    public void display() { // Վերագրած մեթոդ - նույն սինտաքսը
        System.out.println("Child display");
    }
}