Junior
Երբ է տեղի ունենում մեթոդի վերագրում (overriding)։
sobes.tech AI
Պատասխան AI-ից
Մեթոդի վերագրում (overriding) տեղի է ունենում ժառանգության հիերարխիայում, երբ ժառանգորդ դասը տրամադրում է իր սեփական իրականացմանը արդեն սահմանված մեթոդի, որը նույն անունով, նույն սիգնատուրայով (տիպի և պարամետրերի քանակի համապատասխանությամբ) և նույն վերադարձվող տիպով (կամ kovariant-ով վերադարձվող օբյեկտի տիպով)։
Հիմնական հատկանիշներ՝
- Ժառանգություն: Վերագրումը հնարավոր է միայն ժառանգության կոնտեքստում (հայր և որդի դասեր):
- Սիգնատուրա: Որդու դասի մեթոդը պետք է ունենա նույն սիգնատուրան (անուն, պարամետրերի քանակը և տիպերը) և նույն վերադարձվող տիպը (կամ նրա kovariant ենթատիպը), ինչ հայրական դասի մեթոդը:
- Հասանելիություն: Վերագրող մեթոդը պետք է լինի հասանելի որդի դասի համար (հաճախ
public,protected)։ - Պոլիմորֆիզմ: Վերագրումը հանդիսանում է ժամանակի պոլիմորֆիզմի հիմքը, որը թույլ է տալիս որդի դասի օբյեկտներին արձագանքել մեթոդի կանչին իրենց սեփական ձևով, նույնիսկ եթե նրանց դիմում են հայրական դասի հղումով։
Օրինակ (Java):
// Հայրական դաս
class Animal {
// Մեթոդ, որը կվերագրի
public void makeSound() {
System.out.println("Հավկիթը հանում է ձայն");
}
}
// Որդական դաս
class Dog extends Animal {
// makeSound() մեթոդի վերագրում
@Override // @Override նշումը ընտրովի է, բայց խորհուրդ է տրվում
public void makeSound() {
System.out.println("Շունը հաչում է");
}
}
Օգտագործման օրինակ:
// Dog օբյեկտ ստեղծում
Animal myDog = new Dog();
// Մեթոդի կանչ. Կոչվի Dog- ի վերագրած տարբերակը
myDog.makeSound(); // Արտածում՝ Շունը հաչում է
// Animal օբյեկտ ստեղծում
Animal someAnimal = new Animal();
// Մեթոդի կանչ. Կոչվի Animal- ի տարբերակը
someAnimal.makeSound(); // Արտածում՝ Հավկիթը հանում է ձայն