Sobes.tech
Junior

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

sobes.tech AI

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

Մեթոդը համարվում է վերագրած՝ հետևյալ դեպքերում.

  1. Այն հայտարարված է ժառանգական դասում:
  2. ունի նույն անունը, ինչ ծնողական դասի մեթոդը:
  3. ունի նույն ստորագրությունը (պարամետրերի քանակը և տիպերը) և պարամետրերի կարգը:
  4. ունի վերադարձի տիպ, որը համատեղելի է ծնողական դասի մեթոդի հետ (կովարիանտություն, եթե կիրառելի է):
  5. ունի նույն կամ ավելի լայն մուտքի մոդիֆիկատոր, քան ծնողական դասի մեթոդը (շատ օբյեկտ-կենտրոնացված լեզուներում):
  6. ծնողական մեթոդը հայտարարված է որպես վիրտուալ, աբստրակտ կամ ինտերֆեյսային (լեզուներում, որոնք պահանջում են հստակ նշում, որ վերագրումը հնարավոր է, օրինակ՝ 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-ը նշանակում է՝ ժառանգական դասում նույն անունով և ստորագրությամբ մեթոդ հայտարարելը, ինչպես ծնողական դասում: