Junior
Երբ է մեթոդը համարվում է վերաշարադրված?
sobes.tech AI
Պատասխան AI-ից
Մեթոդը համարվում է վերագրած՝ հետևյալ դեպքերում.
- Այն հայտարարված է ժառանգական դասում:
- ունի նույն անունը, ինչ ծնողական դասի մեթոդը:
- ունի նույն ստորագրությունը (պարամետրերի քանակը և տիպերը) և պարամետրերի կարգը:
- ունի վերադարձի տիպ, որը համատեղելի է ծնողական դասի մեթոդի հետ (կովարիանտություն, եթե կիրառելի է):
- ունի նույն կամ ավելի լայն մուտքի մոդիֆիկատոր, քան ծնողական դասի մեթոդը (շատ օբյեկտ-կենտրոնացված լեզուներում):
- ծնողական մեթոդը հայտարարված է որպես վիրտուալ, աբստրակտ կամ ինտերֆեյսային (լեզուներում, որոնք պահանջում են հստակ նշում, որ վերագրումը հնարավոր է, օրինակ՝ C#-ում
virtualբանալի բառով):
Օրինակ Java-ով:
// Ծնողական դաս
class SuperClass {
// Մեթոդ, որը կարող է վերագրել
public void display() {
System.out.println("Սա SuperClass-ի display մեթոդն է:");
}
}
// Որդեգրված դաս
class SubClass extends SuperClass {
// Վերագրած display մեթոդ
@Override // Անոտացիա՝ վերագրումը ստուգելու համար կոմպիլյացիայի ժամանակ
public void display() {
System.out.println("Սա SubClass-ի display մեթոդն է:");
}
}
Python-ով:
# Ծնողական դաս
class SuperClass:
# Մեթոդ, որը կարող է վերագրել
def display(self):
print("Սա SuperClass-ի display մեթոդն է:")
# Որդեգրված դաս
class SubClass(SuperClass):
# Վերագրած display մեթոդ
def display(self):
print("Սա SubClass-ի display մեթոդն է:")
Հիմնականը՝ անունը և ստորագրությունը պահպանել, բայց փոխել նրա վարքագիծը ժառանգական դասում:
Մեծ տարբերություն overloading-ից՝
Overloading-ը նշանակում է միևնույն անունով մի քանի մեթոդների հայտարարում՝ տարբեր ստորագրություններով:
Overriding-ը նշանակում է՝ ժառանգական դասում նույն անունով և ստորագրությամբ մեթոդ հայտարարելը, ինչպես ծնողական դասում: