Junior
Երբ մեթոդը համարվում է վերաշարադրված (overriding)?
sobes.tech AI
Պատասխան AI-ից
Մեթոդը համարվում է վերագրած, երբ ժառանգական դասում հայտարարվում է մեթոդ, որը ունի նույն սինտաքսը (մեթոդի անունը, պարամետրերի քանակը և տիպերը նույն հերթականությամբ), ինչպես ծնողական դասում։ Բացի այդ՝
- Ծնող դասում մեթոդը չի կարող հայտարարվել որպես
final(կամ այլ լեզուներում համապատասխան մոդիֆիկատոր), որը խոչընդոտում է վերագրումը։ - Վերագրած մեթոդի մուտքի մակարդակը ժառանգական դասում չի կարող լինել ավելի սահմանափակ, քան ծնողական դասում։
- Վերագրած մեթոդը կարող է վերադարձնել նույն տիպը, ինչ ծնողական դասում կամ կովարիանտ տիպ (մասին տիպի ենթատիպը)։
- Վերագրած մեթոդը չի կարող արտածել ավելի ընդհանուր (կամ անհամատեղելի) արտահայտություններ, քան ծնողական մեթոդում նշված արտահայտությունները։
- Ստատիկ մեթոդները չեն կարող վերագրել, միայն թաքցնել (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");
}
}